1

次のようなデータテーブルがあります

A  |  B
-------
1  |  b1
1  |  b2
1  |  b3
2  |  b4
2  |  b5
3  |  b6
3  |  b7
3  |  b8
3  |  b9

列 A の個別の値ごとに最初の行を選択する LINQ コマンドを作成するにはどうすればよいですか。

A  |  B
---------
1  |  b1
2  |  b4
3  |  b6
4

4 に答える 4

4
var result = list.GroupBy(x => x.A).Select(x => x.First()).ToList();

またはMoreLINQDistinctByから使用

var result = list.DistinctBy(x => x.A).ToList();
于 2012-09-05T09:15:01.670 に答える
3
IEnumerable<DataRow> aRows = table.AsEnumerable()
                                  .GroupBy(r => r.Field<int>("A"))
                                  .Select(g => g.First());

B-fieldで並べ替える場合(最初に並べ替えない場合):

IEnumerable<DataRow> aRows = table.AsEnumerable()
                                  .OrderBy(r => r.Field<String>("B"))
                                  .GroupBy(r => r.Field<int>("A"))
                                  .Select(g => g.First());

それから別のテーブルが必要な場合:

DataTable tblARows = aRows.CopyToDataTable();
于 2012-09-05T09:20:32.393 に答える
2

列 A でグループ化し、B の最初のエントリを選択する必要があります (B 列の値を並べ替えたい場合があります)。

ここにコードサンプルがあります:

linq to entity を使用して個別のレコードを取得する

于 2012-09-05T09:15:23.067 に答える
1
var dt = new DataTable();
//init your datatable
var dist = dt.Rows.Cast<DataRow>().GroupBy(r=>r.A).Select(g=>g.First()).ToArray();
于 2012-09-05T09:18:17.900 に答える