在数据库之外,我试图创建一个对象列表,其中只包含不同的值。
对于仅按1列分组的情况,此方法工作良好。
List<object[]> myList =
myDataTable.AddRange(entity.MyTable.AsEnumerable().Select(e => new object[]{ e.id, e.foreignKey, e.id, e.name }).GroupBy(x => x[0]).Select(x => x.First()).ToList();
但是对于2列,我得到了错误:
List<object[]> myList =
myDataTable.AddRange(entity.MyTable.AsEnumerable().Select(e => new object[]{ e.id, e.foreignKey, e.id, e.name }).GroupBy(x => new {x[0], x[1]}).Select(x => x.First()).ToList();
错误信息是:
无效的匿名类型成员声明器。必须使用成员分配、简单名称或成员访问权限声明匿名类型成员。
现在我的问题是:我如何按2个数组元素进行分组?
发布于 2015-04-10 03:08:26
正如异常消息所述,您需要在GroupBy
的匿名类型声明中声明成员,如下所示:-
List<object[]> myList =
myDataTable.AddRange(entity.MyTable.AsEnumerable()
.Select(e => new object[]{ e.id, e.foreignKey, e.id, e.name })
.GroupBy(x => new { a = x[0], b = x[1] }).Select(x => x.First()).ToList();
https://stackoverflow.com/questions/29559817
复制