2016-07-27 48 views
2

我收集的数据与2 coloumn数组看起来像如何找到这个在数组值基础条件

--------------- 
Order | Value 
--------------- 
order1 | 45 
order2 | 70 
order1 | 85 
order2 | 32 
-------------- 

如何获得基于条件,其中为了阵列中的所有值= order1只,总结呢?

谢谢

+0

我会使用LINQ。你有看过吗?如果是这样,显示你已经尝试过,出了什么问题。 (提示:你应该可以通过调用'Where'和调用'Sum'来完成)。为什么你使用2D数组而不是封装了命令名和值的类型,提个醒。目前还不清楚这是矩形阵列还是锯齿阵列。 [mcve]会让你更容易帮助你。 –

+0

@JonSkeet我不认为他的意思是一个二维数组(我们知道它),因为我不认为二维数组可以在一维中保存一个字符串,在第二维中保存一个数字。除非它是一个对象数组(不太可能) – user3185569

+0

@ user3185569:说实话,很难说清楚。这就是为什么我要求[mcve]。 –

回答

3

使用LINQ(Where为条件)和(Sum聚集函数):

var sum = array.Where(x=> x.Order == "order1").Sum(x=> x.Value); 

如果你真的意味着一个2-d(多维)数组,那么你可以做这个:

object[,] array = 
{ 
    { "order1", 45 }, { "order2", 70 }, 
    { "order1", 85 }, { "order2", 32 } 
}; 


decimal Sum = 0; 
for(int i = 0; i < array.GetLength(0); i++) 
{ 
    if (array.GetValue(i, 0)?.ToString() == "order1") 
    { 
     decimal val; 
     if(decimal.TryParse(array.GetValue(i, 1)?.ToString(), out val)) 
      Sum += val; 
    } 
} 
+0

你能给我一个完整的代码吗?我刚从这个简单的数组开始: string [,] ord = new string [7,3]; 如何使用该数组实现该linq代码?谢谢 – MFBM

+0

@MFBM检查编辑。 – user3185569

+0

非常感谢。但是,如果你设计,如果我不使用二维数组,如下这个数组: string [,] ord = new string [7,3];请检查编辑过的帖子。那么如何开始使用LINQ如果使用该数组? – MFBM