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

要详细说明 Douglas 的答案,如果您不使用点表示法,则需要明确命名您的字段。

当您使用点表示法时,Linq 可以根据属性的名称来确定列的名称。但是由于您使用的是数组索引,所以它不知道如何命名它。

因此,在下面的示例中,Linq 会知道使用SomethingSomethingElse作为字段名称。

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 回答