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

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

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

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

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

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

MyRowComparer myrc = new MyRowComparer();
var uniquerows = dtCSV.AsEnumerable().Distinct(myrc);

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

public class MyRowComparer : IEqualityComparer<DataRow>
{
    public bool Equals(DataRow x, DataRow y)
    {
        //return ((string.Compare(x.Field<string>("PRODUCT_ID"),   y.Field<string>("PRODUCT_ID"),   true)) ==
        //        (string.Compare(x.Field<string>("OWNER_ORG_ID"), y.Field<string>("OWNER_ORG_ID"), true)));
        return
            x.ItemArray.Except(new object[] { x[x.Table.Columns["PRODUCT_ID"].ColumnName] }) ==
            y.ItemArray.Except(new object[] { y[y.Table.Columns["PRODUCT_ID"].ColumnName] }) &&
            x.ItemArray.Except(new object[] { x[x.Table.Columns["OWNER_ORG_ID"].ColumnName] }) ==
            y.ItemArray.Except(new object[] { y[y.Table.Columns["OWNER_ORG_ID"].ColumnName] });
    }

    public int GetHashCode(DataRow obj)
    {
        int y = int.Parse(obj.Field<string>("PRODUCT_ID"));
        int z = int.Parse(obj.Field<string>("OWNER_ORG_ID"));
        int c = y ^ z;
        return c;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос