所以对于这个例子,假设我有一个名为 dt 的 DataTable 并且它有一些列,我想返回一个列名列表以及每列中有多少不同的值。我也想要按从大到小排序的结果集
例如,我有一个包含 4 列和 40 行数据的表,第一列有 4 个不同的值,第二列 12,第三列 20,第四列 40。我希望我的结果集看起来像这样
Column4 40
Column3 20
Column2 12
Column1 4
我如何使用 C# 和 Linq 来实现这一点?
您的 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);
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();