を使用して多次元配列から合計が必要です。これは多次元オブジェクト配列であることに注意してください。 i.Keyは文字列値で、i.Valueは合計する必要があるint値です。 は、私は次のコードを持ってLINQ
は、事前にありがとうそれは明確にしている場合、より効率的であるint sum = ccdata.Sum(x => (int) x[1]);
を使用して多次元配列から合計が必要です。これは多次元オブジェクト配列であることに注意してください。 i.Keyは文字列値で、i.Valueは合計する必要があるint値です。 は、私は次のコードを持ってLINQ
は、事前にありがとうそれは明確にしている場合、より効率的であるint sum = ccdata.Sum(x => (int) x[1]);
dic.Sum(i => Int32.Parse(i.Value)); // if i.Value is string instead of just int
dic.Sum(i => i.Value); // if string
または
ccdata.Sum(i => (int)i[1]); // if i[1] is object instead of just int
ccdata.Sum(i => i[1]); // if int
'i [1]'のコンパイル時の型は単に 'object'なので、後者はコンパイルに失敗します。 –
@ジョン:確かに。ありがとう! – abatishchev
あなたは非常にこの方法でそれをやっている理由は不明だが、それはそれらを合計することはかなり簡単です...あなたが使用:
var ccdata = dict1.Select(i => new { i.Key, Value = Int32.Parse(i.Value) })
.ToArray();
あなたはコンパイル時の型の安全性となしボクシングで終わるその方法:
int sum = ccdata.Sum(x => x.Value);
(私はあなたが実際に何か別の理由でccdataを望んでいると仮定しています。それ以外の場合は、abatishchevのソリューションを使用し、完全にあなたの既存のコードを取り除く。)
i.Valueは、あなたの内側の配列内の2番目の位置にあります。 そのようにする必要があります:
var sum = cdata.Sum(arr => (int)arr[1]);
なぜ2つをオブジェクト配列に入れて、すべてをボクシングしていますか? –
'i.Value'は文字列ですか?なぜあなたはそれを解析するのですか、最初は数字ではないのですか? – abatishchev
もしI.Valueがすでにintであればint.Parseは文字列を期待してコンパイルされません。それは文字列かintか? –