1

Linqクエリを使用して列名をgroupByし、行のリストを返します。

var query = from row in ProcessSummaryData.AsEnumerable()
            group row  by new { Key = row .Field<string>("GroupDescription") } into g
            select new 
           { 
             GroupDescription = g.Key, 
             Values = g.ToList(), 

           };

このクエリの出力は次のようになります

GroupDescription   Values
1                  12,abc,xyz
                   12,abx,yut
                   13,tye,lki

2                  14,asd,acd

上記の例では、ValuesはDataRowであり、その中の値の例を示しました。ここで必要なのは、GroupDescription '1'の場合、出力には'12'値の行が1つしかないということです。私はいくつかのことを試しましたが、そのうちの1つは、最初のリストに別のLinqクエリを含めることですが、それは物事を複雑にしすぎています。linqを使用して最初の列でグループ化し、特定の列が返されたリストでDistinctを使用して、Distinct行のみを取得するにはどうすればよいですか?

4

1 に答える 1

1

フィールドの値の最初の出現を取得するには、そのフィールドでグループ化してから、各グループ化の最初の行を取得します。

var query = from row in ProcessSummaryData.AsEnumerable()
            group row  by new { Key = row .Field<string>("GroupDescription") } into g
            select new 
            { 
                GroupDescription = g.Key, 
                Values = (from value in g.ToList()
                          group value by value["Id"] into valueGroup
                          select valueGroup.First()).ToList()     
            };
于 2012-11-22T02:24:04.390 に答える