我不知道我应该用什么语法来制作分组,多列使用索引。
假设我有这样的结构:
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] });
答案 0 :(得分:3)
您可能只需要以匿名类型命名字段:
var groupByResult = listToGroupBy.GroupBy(c => new { c0 = c[0], c3 = c[3] });
答案 1 :(得分:1)
要详细说明道格拉斯的回答,如果不使用点符号,则需要明确命名字段。
当您使用点表示法时,Linq可以根据属性的名称找出列的名称。但是因为你正在使用数组索引,所以它不知道该命名它。
因此,在下面的示例中,Linq会知道使用Something
和SomethingElse
作为字段名称。
var groupByResult = listToGroupBy.GroupBy(c => new {c.Something, c.SomethingElse});
就像道格拉斯所说,你可以通过命名你的字段来获得与点符号相同的结果:
var groupByResult = listToGroupBy.GroupBy(c => new { Something = c[0], SomethingElse = c[3] });