0

このサンプル データを含むデータ テーブルがあります。

ここに画像の説明を入力

要件は、このデータ テーブルを作成してすべての行を返すようにすることですが、重複する行 (たとえば最後の 2 つ) の場合は、異なる値をカンマで結合し、1 つのレコードにして返す必要があります。

例えば:

金銀、冶金学者 19 ニック・ゴードン . . . . .

私を助けてください。

ありがとう

4

1 に答える 1

1

職業フィールドは唯一の変化するフィールドであり、このフィールドに結合された値が必要なため、以下が必要です
1.Groupingに基づいてProfession
2.Selectレコード
3.Aggregate職業を結合するために使用

また、表す具体的な型を定義する必要がありますRow(ProfessionRecord以下のコード内)。

 var results = dataTable.AsEnumerable()
                   .GroupBy(x=> x.Field<string>("Profession"))
                   .Select (  grouping => 
                               new {
                                  Key=grouping.Key,
                                  CombinedProfession = grouping.Aggregate( (a,b)=> a + " " + b)
                                })
                    .Select (x=> new ProfessionRecord
                            {
                              Id = x.Key.Id,
                              Name = x.Key.Name,
                              Profesion = x.CombinedProfession,
                            });

VB.NETツールから

 Dim results = dataTable.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("Profession")).[Select](Function(grouping) New With { _
    .Key = grouping.Key, _
    .CombinedProfession = grouping.Aggregate(Function(a, b) a + " " + b) _
}).[Select](Function(x) New ProfessionRecord() With { _
    .Id = x.Key.Id, _
    .Name = x.Key.Name, _
    .Profesion = x.CombinedProfession _
})

(VB.NET は私の母国語ではないので、どの程度最適化されているかはわかりません)

メソッドのData Row Extensionsの参照を追加する必要があります Field<T>(string fieldname)

于 2013-01-11T05:06:14.747 に答える