2016-07-27 80 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