Разбить DataTable на 2 или более DataTables на основе значения столбца
У меня есть DataTable, называемый "DTHead", который имеет следующие записи,
MIVID Quantity Value
------ ---------- --------
1 10 3000
1 20 3500
1 15 2000
2 20 3000
2 50 7500
3 25 2000
Здесь мне нужно разбить вышеуказанный DataTable на три таблицы на основе MIVID, например:
DTChild1:
MIVID Quantity Value
------- ---------- ---------
1 10 3000
1 20 3500
1 15 2000
DTChild2:
MIVID Quantity Value
------- ---------- ---------
2 20 3000
2 50 7500
DTChild3:
MIVID Quantity Value
------- ---------- ---------
3 25 2000
Предположим, если DataTable Header содержит 4 разных средства MIVID, тогда необходимо создать 4 дочерний DataTable на основе MIVID. Как это сделать?
Ответы
Ответ 1
Используйте LINQ to DataTable
для группировки первого столбца с помощью GroupBy
и используйте метод CopyToDataTable, чтобы скопировать список строк в DataTable
List<DataTable> result = DTHead.AsEnumerable()
.GroupBy(row => row.Field<int>("MIVID"))
.Select(g => g.CopyToDataTable())
.ToList();
Затем вы можете получить результат как список DataTables, как вы ожидали.
Ответ 2
DataTable tbl = new DataTable("Data").AsEnumerable()
.Where(r => r.Field<int>("ParentId") == 1) // ParentId == 1
.Where(r => r.Field<int>("Id") > 3) // Id > 3
.Where(r => r.Field<string>("Name").Contains("L")) // Name contains L
.OrderBy(r => r.Field<int>("Id")) // Order by Id
.CopyToDataTable();