2012-04-28 149 views
2

我有一個IEnumerable>的對象diceRolls。數據集看起來像 {{1,1}, {1,2}, {1,3}, {1,4}, {1,2}}分組IEnumerable <IEnumerable <int>>

我需要得到一個結果集對常用集合進行分組並彙總該集合的總行數。

我試過的GroupBy方法是這樣的:

var aggregate = sorted.GroupBy(rolls => rolls, rolls => rolls); 

但事與願違類的話,我能找到的輥內部沒有田的,所以我唯一的選擇就是整個物體本身的反對團體。我該怎麼做呢?

+0

你是什麼意思的普通設置相同的總數2-4和3-3或2-4,4-2將是一個組? – RichardOD 2012-04-28 13:07:44

+0

相同的數字,所以{1,2}和{1,2,}將是組,但不是{2,4}和{3,3}。我已經對結果進行了排序,所以我永遠不會有{2,1},我會一直有{1,2}。 – 2012-04-28 13:14:28

回答

0

您可以傳遞給GroupBy自定義IEqualityComparer,它實現的序列等於是按照威脅{1,2}和{1,2}相同的順序進行分組。但是,如果你知道,你的卷只有2個元素時,你可以使用匿名類型及其平等的實現:

var sorted = new[] { new[] { 1, 2 }, new[] { 1, 2 }, new[] { 1, 3 }, new[] { 2, 2 } }; 
var grouped = sorted.GroupBy(roll => new { r0 = roll[0], r1 = roll[1] }); 
var backToArrays = grouped.Select(g => new[] { g.Key.r0, g.Key.r1 }); 

該代碼將產生{{1,2},{1,3},{2, 2}}。你需要嗎?

+0

是的,除了我會有從2到20的任何數量的元素。 – 2012-04-29 12:13:47

相關問題