0

複数の列を持つグループ化をインデックスで機能させるために使用する構文がわかりません。

次のような構造があるとします。

    var listToGroupBy = new List<List<string>>
        {
            new List<string> {"a", "b", "c"},
            new List<string> {"a", "b", "c"},
            new List<string> {"d", "k", "c"},
            new List<string> {"d", "z", "c"}
        };

次に、1 番目と 3 番目の項目でグループ化します。以下のような構文を使用したいのですが、今のところ成功していません。

var groupByResult = listToGroupBy.GroupBy(c => new { c[0], c[2] });
4

2 に答える 2

3

おそらく、匿名タイプのフィールドに名前を付ける必要があります。

var groupByResult = listToGroupBy.GroupBy(c => new { c0 = c[0], c3 = c[3] });
于 2013-03-08T18:26:56.540 に答える
1

ダグラスの答えを詳しく説明するには、ドット表記を使用しない場合は、フィールドに明示的に名前を付ける必要があります。

ドット表記を使用すると、Linq はプロパティの名前に基づいて列の名前を判断できます。しかし、配列インデックスを使用しているため、名前を付ける方法がわかりません。

したがって、以下の例では、Linq はフィールド名としてSomethingandを使用することを知っています。SomethingElse

var groupByResult = listToGroupBy.GroupBy(c => new {c.Something, c.SomethingElse});

ダグラスが言ったように、フィールドに名前を付けることで、ドット表記と同じ結果を得ることができます。

var groupByResult = listToGroupBy.GroupBy(c => new { Something = c[0], SomethingElse = c[3] });
于 2013-03-08T18:33:22.153 に答える