Determinando duplicatas em uma tabela de dados

Eu tenho uma tabela de dados que eu carreguei de um arquivo CSV. Preciso determinar quais linhas são duplicatas com base em duas colunas (product_id eowner_org_id) na tabela de dados. Depois de determinar isso, posso usar essas informações para criar meu resultado, que é uma tabela de dados contendo apenas as linhas que não são exclusivas e uma tabela de dados contendo apenas as linhas exclusivas.

Eu olhei para outros exemplos aqui e o código que eu desenvolvi até agora compila e executa, mas parece pensar que cada linha nos dados é única. Na realidade, nos dados de teste, há 13 linhas e apenas 6 são exclusivas. Então, claramente, estou fazendo algo errado.

EDITAR: Pensei que eu deveria notar, linhas que têm duplicatas devemTODOS ser removido, não apenas as duplicatas dessa linha. por exemplo, se houver 4 duplicatas, todas as 4 devem ser removidas, não 3, deixando uma linha única de 4.

EDIT2: Como alternativa, se eu puder selecionar todas as linhas duplicadas (em vez de tentar selecionar linhas exclusivas), tudo bem para mim. De qualquer maneira pode me levar ao meu resultado final.

O código no método de processamento:

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

junto com o seguinte:

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;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion