次の詳細を含むデータテーブルがあります。
ID | VERSION | ENTITY
1 | 01 | A01
1 | 01 | A02
2 | 01 | A01
2 | 01 | A02
以下のように列ENTITYの値をマージしたいと思います。
ID | VERSION | ENTITY
1 | 01 | A01/A02
2 | 01 | A01/A02
Linqを使用してそれを達成できる方法はありますか?
匿名タイプを使用して、複数のプロパティでグループ化できます。
var result = list1.GroupBy(x=> new {x.ID, x.VERSION}).Select(
item => new Example
{
ID = item.Key.ID,
VERSION = item.Key.VERSION,
ENTITY = string.Join("/", item.Select(c=>c.ENTITY))
});
その後、適切なプロパティを選択し、必要なタイプの新しいオブジェクトにフィードします。
出力:
編集:
では、演算子DataTable
を介して列にアクセスする必要があります[ ]
が、グループ化の原則は同じです。
例示的なDataTable:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("VERSION", typeof(string));
table.Columns.Add("ENTITY", typeof(string));
table.Rows.Add(1, "01", "A01");
table.Rows.Add(1, "01", "A02");
table.Rows.Add(2, "01", "A01");
table.Rows.Add(2, "01", "A02");
グループ化:
var result = table.AsEnumerable().GroupBy(x => new { ID = x["ID"], VERSION = x["VERSION"]}).Select(
item => new Example
{
ID = (int)item.Key.ID,
VERSION = (string)item.Key.VERSION,
ENTITY = string.Join("/", item.Select(c => c["ENTITY"]))
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加