【问题标题】:Error while using Group By in LinQ在 LinQ 中使用 Group By 时出错
【发布时间】:2016-11-14 08:22:36
【问题描述】:

我对 Linq 比较陌生,正在尝试按我的 Linq 查询进行分组,但收到不包含字段值的错误。

下面是我的 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")});

【问题讨论】:

标签: c# linq


【解决方案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&lt;IGrouping&lt;string,DataRow&gt;&gt;
  • 当您执行Select 时,您会得到IGrouping,您需要在此基础上进一步执行Select 以获取用于创建结果Anonymous Type 的确切元素Anonymous Type,如本例所示

【讨论】:

  • 感谢您的解释。它的解决方案运行良好。
【解决方案2】:

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

【讨论】:

  • 请将此作为评论添加,您没有任何附加价值
猜你喜欢
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2011-10-25
  • 2017-02-06
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多