在LinQ中使用Group By时出错

时间:2016-11-14 08:22:36

标签: c# linq

我对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")});

2 个答案:

答案 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")}));

<强>解释

  • 在这种情况下,GroupBy将创建IEnumerable<IGrouping<string,DataRow>>
  • 执行Select后,您需要IGrouping,您需要进一步Select以获取用于创建结果{{1}的确切元素DataRow在这种情况下

答案 1 :(得分:0)

请参阅LINQ Case statement with COUNT and GROUP以选择分组依据中的字段。 Lambda exp和c#linq都可用。