Выбор дублирующихся значений в DataTable с несколькими условиями

0

У меня есть datatable (DT), и я должен выбрать повторяющиеся значения в указанном столбце с несколькими условиями в других столбцах и получить идентификатор строки. К несчастью, я в этом начинаю.

Мой DataTable содержит следующие столбцы:

Id, PartNo, Group 

Я нашел этот код ниже, и это работает, если я хотел бы получить несколько значений в столбце, но я не могу его расширить.

Dim duplicates = From row In DT.AsEnumerable() _
    .GroupBy(Function(i) i.Field(Of String)("PartNo")) _
    .Where(Function(g) g.Count() > 1) _
    .Select(Function(g) g.Key)

For Each dup In duplicates
    Debug.Print(dup)
Next

Поэтому я хотел бы

- get the "Id" values on those rows
- where ["Group"] LIKE "Assembly" OR ["Group"] LIKE "Part" 
 AND
- "PartNo" value can found more than once

Пример: В этой таблице я хотел бы получить значения "Id": 1, 3, 5, 6, 8

+----+--------+----------+
| Id | PartNo |  Group   |
+----+--------+----------+
|  1 |   1111 | Assembly |
|  2 |   1111 | Common   |
|  3 |   2222 | Part     |
|  4 |   2222 | Common   |
|  5 |   2222 | Part     |
|  6 |   1111 | Part     |
|  7 |   3333 | Assembly |
|  8 |   2222 | Assembly |
+----+--------+----------+

Спасибо

Теги:
linq
datatable

1 ответ

0
Лучший ответ

Вы можете просто добавить другое предложение.Where, прежде чем группировать, чтобы выбрать несколько номеров деталей, затем.SelectMany, чтобы сгруппировать группы в список целых чисел:

Dim duplicates = From row In DT.AsEnumerable() _
.Where(Function(i) i.Field(Of String)("Group") = "Part" OrElse i.Field(Of String)("Group") = "Assembly") _
.GroupBy(Function(i) i.Field(Of String)("PartNo")) _
.Where(Function(g) g.Count() > 1) _
.SelectMany(Function(g) g.Select(Function(c) c.Field(Of Integer)("Id")))
  • 0
    Спасибо за помощь .. в последнем ряду есть ошибка с "Select (c> = c.") VB пометил это красным подчеркиванием
  • 0
    Извините, я был на C # земле :) Я редактировал
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню