我有一个对象diceRolls,它是一个IEnumerable>。数据集看起来像 {{1,1}, {1,2}, {1,3}, {1,4}, {1,2}}
我需要获得一个对公共集进行分组的结果集,并总结该集的总行数。
我尝试了这样的GroupBy方法:
var aggregate = sorted.GroupBy(rolls => rolls, rolls => rolls);
但它没有组合任何内容,我发现roll对象内部没有字段可以分组,所以我唯一的选择是整个对象本身。我该怎么做?
答案 0 :(得分:0)
你可以传递给GroupBy
自定义IEqualityComparer
,它实现了序列等于所以分组威胁{1,2}和{1,2}同样如此。但是如果你知道,当你可以使用匿名类型并且它等于实现时你的roll只有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}}。这是你需要的吗?