因此,对于这个例子,假设我有一个名为dt的DataTable,它有一些列,我想找回列名列表以及每列中有多少个不同的值。此外,我希望结果集按最大值排列到最小值
例如,我有一个包含4列和40行数据的表,在第一列中有4个不同的值,第二列12,第三列20,第四列40.我希望我的结果集看起来像这样< / p>
Column4 40
Column3 20
Column2 12
Column1 4
我怎样才能使用C#和Linq实现这一目标?
答案 0 :(得分: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);
答案 1 :(得分: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();