2017-05-24 12 views
-1

辞書タイプ<int, list<int>>を持っています。私は、その特定のキーに対して繰り返されたバリューインスタンスの数を数えようとしています。LINQを使用した辞書の値の集計

私は私の辞書内のすべてのユニークな値のための新たなリストのエントリを作成しています。このLINQによって

LINQquery = dict.SelectMany(keyvalues => keyvalues.Value.GroupBy(values => values).Select(values => new {key = keyvalues.Key, value = values.Key, count = values.Count(),votescasted = keyvalues.Value.Count})); 
resultList = LINQquery.ToList(); 

を試してみました。私は私のリストの複数のキーのエントリで終わっています。どのようにして私のクエリを変更して、結果リストにkey、c​​ountvalue1、countofvalue2 ..、countofvalueNを持たせることができますか?

私の入力は、26 =値、= 3 キー= 500を数え、25 =私はリストに キー= 500、値を取得しています私のLINQとdictの{500、{25,26,25,25}} です、count = 1

出力リストが のkey = 500、countof25 = 3、countof26 = 1になるようにクエリを変更するにはどうすればよいですか?

+1

を:その後、我々は追加することができます

var x = dict .Select(d => new { Key = d.Key, Counts = d.Value.GroupBy(v => v) .Select(g => new { Value = g.Key, Count = g.Count() })}); 

x.Select(i => $"Key = {i.Key}, " + String.Join(", ", i.Counts.Select(c => $"countof{c.Value}={c.Count}"))).Dump(); 

を、我々が得ます入力と期待される出力。それはあなたがやっていることの*説明*よりもあなたを助けるのがずっと簡単になります。 –

+0

タイプはint型です。リストは{int} – derekspoll

+0

入力辞書{500、{25,26,25,25}出力リストキー= 500、countof25 = 3、countof26 = 1 – derekspoll

答えて

0

私は、これはあなたがやりたいと考えている:[MCVE]を示すサンプルを提供してください

Key = 500, countof25=3, countof26=1 
+0

@jamescurranに感謝します。 – derekspoll

関連する問題