0

したがって、この例では、dt と呼ばれる DataTable があり、いくつかの列があるとします。列名のリストと、各列にいくつの異なる値があるかを取得したいとします。また、結果セットを最大から最小に並べ替えたい

たとえば、4 列と 40 行のデータを含むテーブルがあり、最初の列には 4 つの異なる値があり、2 番目の列は 12、3 番目の列は 20、4 番目の列は 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 に答える