我对Linq相对较新,我正在尝试按我的Linq查询进行分组,但我收到的错误不包含Field值。
以下是我的linq查询。任何人都可以帮助我。
var name = dt1.AsEnumerable()
.Where(p => (int)p["Age"] >= 29)
.GroupBy(p =>p.Field<string>("Role"))
.Select(p => new{ID = p.Field<int>("ID"),Name =p.Field<string>("Name"),Role = p.Field<string>("Role"),Age = p.Field<int("Age")});
答案 0 :(得分:1)
正确的代码:
var name = dt1.AsEnumerable()
.Where(p => p.Field<int>("Age") >= 29)
.GroupBy(p =>p.Field<string>("Role"))
.Select(q => q.Select(p => new{ID = p.Field<int>("ID"),Name =p.Field<string>("Name"),Role = p.Field<string>("Role"),Age = p.Field<int>("Age")}));
<强>解释强>
IEnumerable<IGrouping<string,DataRow>>
Select
后,您需要IGrouping
,您需要进一步Select
以获取用于创建结果{{1}的确切元素DataRow
在这种情况下答案 1 :(得分:0)
请参阅LINQ Case statement with COUNT and GROUP以选择分组依据中的字段。 Lambda exp和c#linq都可用。