2

IEnumerable>であるオブジェクトdiceRollsがあります。データセットは、{{1、1}、{1、2}、{1、3}、{1、4}、{1、2}}のようになります。

共通セットをグループ化し、そのセットの行の総数を合計する結果セットを取得する必要があります。

私は次のようなGroupByメソッドを試しました:

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

しかし、それは何もグループ化せず、グループ化するrollsオブジェクト内のフィールドを見つけることができなかったので、私の唯一の選択はオブジェクト全体でした。どうすればよいですか?

4

1 に答える 1

0

GroupByシーケンス イコールを実装するカスタムに渡すことができるIEqualityComparerため、group by は {1, 2} と {1, 2} を同じものとして脅威にさらします。ただし、匿名型とその equals 実装を使用できる場合、ロールには 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 }} を生成します。それはあなたが必要ですか?

于 2012-04-28T15:06:51.330 に答える