繁体   English   中英

使用linq从DataTable分组

[英]Group By from DataTable using linq

大家好,我得到的结果如下

    ID      Name     Price
     1      XYZ       10
     2      ABC       10
     1      ABC       20

我想进行分组,以便给我

    ID      Name     Price
     1      XYZ       10
            ABC       20
     2      ABC       10

我尝试使用链接形式的解决方案,但无法让DataTable linq查询按列进行分组可以有人帮助我

您可以做这样简单的事情

context.Table.GroupBy(t => t.ID);

这将返回IQueryable<IGrouping<int, YourClass>>类型的东西(假设您的ID为int)

每个条目将具有一个键(在这种情况下为ID)和一个枚举器,因此您可以浏览分组的所有记录

除非要更改原始对象,否则必须投影到集合并删除重复的ID值。 就像是:

var query = 
    data.GroupBy(d => d.ID)
        .OrderBy(g => g.Key)
        .SelectMany(g => (new[] {new {
                                      g.First().ID, 
                                      g.First().Name, 
                                      g.First().Price}})
                         .Concat(g.Skip(1).Select(i => new {
                                                            ID = (string)null, 
                                                            i.Name, 
                                                            i.Price})));

实质上:

  • 按编号分组
  • 取每个组中第一项的所有值
  • 取除组中所有其他项目的Id以外的所有值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM