【问题标题】:Trying to get a list distinct values count per column in the same result column尝试获取同一结果列中每列的不同值计数列表
【发布时间】:2012-05-29 17:36:53
【问题描述】:

所以对于这个例子,假设我有一个名为 dt 的 DataTable,它有一些列,我想获取列名列表以及每列中有多少不同的值。我也想要从大到小排序的结果集

例如,我有一个包含 4 列和 40 行数据的表,第一列有 4 个不同的值,第二列 12,第三列 20,第四列 40。我希望我的结果集如下所示

Column4 40
Column3 20
Column2 12
Column1 4

如何使用 C# 和 Linq 实现这一点?

【问题讨论】:

  • 你试过什么?你走了多远?你能得到每列的IEnumerable 吗?你能得到一个特定列中所有值的IEnumerable 吗?一旦你有了那个 2D IEnumerable 查询本身就很简单了?你写过那部分吗?把问题分解成小块。解决您能解决的问题,我们可以帮助解决您无法解决的问题。

标签: c# sql linq


【解决方案1】:

您的 LINQ 代码

var result = dt.Columns
    .Cast<DataColumn>()
    .Select(dc => new {
        Name = dc.ColumnName,
        Values = dt.Rows
            .Cast<DataRow>()
            .Select(row => row[dc])
            .Distinct()
            .Count()})
    .OrderBy(item => item.Values);

【讨论】:

    【解决方案2】:
    var result =
        dt.Columns
            .Cast<DataColumn>()
            .Select(c =>
                new
                {
                    c.ColumnName,
                    DistinctValuesCount =
                        dt.Rows
                            .Cast<DataRow>()
                            .Select(r => r[c])
                            .Distinct()
                            .Count()
                })
            .OrderByDescending(i => i.DistinctValuesCount)
            .ToArray(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多