このサンプル データを含むデータ テーブルがあります。
要件は、このデータ テーブルを作成してすべての行を返すようにすることですが、重複する行 (たとえば最後の 2 つ) の場合は、異なる値をカンマで結合し、1 つのレコードにして返す必要があります。
例えば:
金銀、冶金学者 19 ニック・ゴードン . . . . .
私を助けてください。
ありがとう
職業フィールドは唯一の変化するフィールドであり、このフィールドに結合された値が必要なため、以下が必要です
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)