Определение дубликатов в таблице данных
=======================================

 У меня есть таблица данных, которую я загрузил из файла CSV. Мне нужно определить, какие строки являются дубликатами на основе двух столбцов `product_id` а также`owner_org_id`) в данных. После того как я определил это, я могу использовать эту информацию для построения своего результата, который представляет собой таблицу данных, содержащую только строки, которые не являются уникальными, и таблицу данных, содержащую только строки, которые являются уникальными.

 Я рассмотрел другие примеры, приведенные здесь, и код, который я создал до сих пор, компилируется и выполняется, но кажется, что каждая строка данных уникальна. На самом деле в тестовых данных 13 строк, и только 6 уникальны. Ясно, что я делаю что-то не так.

**РЕДАКТИРОВАТ**: Я подумал, что строки с дубликатами должны**ВС** удаляются, а не только дубликаты этой строки. например, если есть 4 дубликата, все 4 должны быть удалены, а не 3, оставляя одну уникальную строку из 4.

 **EDIT2**: В качестве альтернативы, если я могу выбрать все дублирующиеся строки (вместо того, чтобы пытаться выбрать уникальные строки), это нормально для меня. В любом случае, я могу получить конечный результат.

 Код в методе обработки:

 наряду со следующим:

 Вы можете использовать LINQ-To-DataSet и`Enumerable.Except`/`Intersect`:

**Редактироват**: Очевидно, я немного неправильно понял ваше требование. Таким образом, у вас есть только один`DataTable` и хочу получить все уникальные и все повторяющиеся строки, это еще проще. Вы можете использовать[**`Enumerable.GroupBy`**](https://msdn.microsoft.com/en-us/library/bb341740) с анонимным типом, содержащим оба поля:



 которые вам не интересны `Except` исключает) в.

 Вместо этого будьте максимально понятны (тип данных) и сохраняйте их простыми:

Проверить`null` если это возможно. Возможно, вы хотите исключить строки, которые равны, потому что их идентификаторы равны нулю.

 Соблюдайте`int?`. Это не опечатка. Вопросительный знак необходим, если вы имеете дело со значениями базы данных из столбцов, которые могут быть`NULL`. Причина в том, что`NULL` значения будут представлены типом`DBNull` в C #. Используя`as` оператор просто дает вам`null` в этом случае (вместо`InvalidCastException`. Если вы уверены, вы имеете дело с`INT NOT NULL`, заклинание с`(int)`.

 То же самое относится и к строкам.`(string)` утверждает, что вы ожидаете ненулевые значения БД.

 EDIT1:

 Неправильный тип. ItemArray не является хеш-таблицей. Используйте строку напрямую.

 EDIT2:

 Добавлено`string` пример, какой-то комментарий

 Для более простого пути, проверьте [Как выбрать отдельные строки в таблице данных и сохранить в массиве](https://stackoverflow.com/questions/1199176/how-to-select-distinct-values-from-datatable)

 EDIT3:

 Некоторое объяснение касательно слепков.

 Другая ссылка, которую я предложил, делает то же самое, что и ваш код. Я забыл ваше первоначальное намерение ;-) Я только что увидел ваш код и ответил на самую очевидную ошибку, которую я видел - извините

 Вот как бы я решил проблему

 Я не знаю, правильно ли это на 100%, у меня нет IDE под рукой. И вам нужно будет настроить приведение к соответствующему типу. Смотрите мое дополнение выше.