0

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

例如,我有一个包含 4 列和 40 行数据的表,第一列有 4 个不同的值,第二列 12,第三列 20,第四列 40。我希望我的结果集看起来像这样

Column4 40
Column3 20
Column2 12
Column1 4

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

4

2 回答 2

3

您的 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);
于 2012-05-29T17:42:22.710 回答
0
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(); 
于 2012-05-29T17:51:50.823 回答