Трудно понять, что вам действительно нужно, основываясь на вашем описании, но я собираюсь догадаться.Моей первой мыслью было бы удалить сторону DataTable
, чтобы мы могли работать с последовательностью строго типизированных объектов, не мешая DataTable
... что мы можем сделать так:
var tableData = dataTable.AsEnumerable()
.Select(row => new {
Folder = row.Field<string>("Folder"),
User = row.Field<string>("User"),
P1 = row.Field<bool>("P1"),
P2 = row.Field<bool>("P2"),
P3 = row.Field<bool>("P3")
});
Затем, предположив, что вы хотите «ИЛИ» результаты после группировки по папке и пользователю, вы можете использовать:
var result = tableData.GroupBy(row => new { row.Folder, row.User })
.Select(g => new {
Folder = g.Key.Folder,
User = g.Key.Folder,
P1 = g.Any(row => row.P1),
P2 = g.Any(row => row.P2),
P3 = g.Any(row => row.P3)
});
Возможно, есть несколько более эффективных способов сделать это, но яВы ожидаете, что это будет достаточно разумно - и если вы хотите большей эффективности, вам, вероятно, следует попытаться переместить логику в любой запрос к базе данных, производящий таблицу.