【问题标题】:Get count of multiple values in a dataset table with extra columns获取具有额外列的数据集表中的多个值的计数
【发布时间】:2015-07-23 09:49:21
【问题描述】:

我有以下代码(来自上一个问题),用于从数据表中获取 ParentID 的列表和计数;

 var results = dt.AsEnumerable()
            .GroupBy(x => x.Field<int>("ParentID"))
            .Select(x => new { ParentID = x.Key, Count = x.Count() })
            .ToList();

这很好用,现在,我还想列出同一个表中名为“DocumentName”的另一列,作为结果查询的一部分,保持 ParentID 的计数,但不确定如何更改代码。

【问题讨论】:

  • 您正在按ParentID 外键对行进行分组。每个ParentIDDocumentName 是否唯一?如果没有,您需要在该字段上使用聚合函数。
  • 感谢 Amir,每个“ParentID”的 DocumentName 都是唯一的
  • 为了澄清您希望 DocumentName 与 ParentID 一起出现在键中,因此它将是多个键
  • 让您将 DocumentName 作为另一列,或者将其作为 Key 包含在内,或者您将在最终结果中获得其类型的 List,因为它将被分组结果
  • DocumentName 是一个整数字段,这个设计很奇怪

标签: c# linq datatable


【解决方案1】:

使用聚合函数,例如Max

var results = dt.AsEnumerable()
            .GroupBy(x => x.Field<int>("ParentID"))
            .Select(x => new
                    {
                       ParentID = x.Key,
                       DocumentName = x.Max(y => y.Field<int>("DocumentName")),
                       Count = x.Count()
                    }).ToList();

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2014-12-21
    • 1970-01-01
    • 2019-12-05
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多