在数据库之外,我正在尝试创建一个只包含不同值的对象列表。
仅按1列进行分组,这适用于NICE
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个数组元素进行分组?
答案 0 :(得分:1)
正如异常消息所述,您需要以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();
答案 1 :(得分:1)
你错误地理解了什么?您应该为您的匿名对象提供属性名称。你可以这样做:
List<object[]> myList =
myDataTable
.AddRange(entity.MyTable.AsEnumerable()
.Select(e => new object[]{ e.id, e.foreignKey, e.id, e.name })
.GroupBy(x => new
{
propertyName1 = x[0],
propertyName2 = x[1]
})
.Select(x => x.First())
.ToList();