Determinación de duplicados en un datatable

Tengo una tabla de datos que he cargado de un archivo CSV. Necesito determinar qué filas son duplicadas basadas en dos columnas (product_id yowner_org_id) en el datatable. Una vez que he determinado eso, puedo usar esa información para compilar mi resultado, que es una tabla de datos que contiene solo las filas que no son únicas, y una tabla de datos que contiene solo las filas que son únicas.

He visto otros ejemplos aquí y el código que he creado hasta ahora compila y ejecuta, pero parece pensar que cada fila en los datos es única. En realidad, en los datos de prueba hay 13 filas y solo 6 son únicas. Claramente estoy haciendo algo mal.

EDITAR: Pensé que debería tener en cuenta, las filas que tienen duplicados debenTODOS ser eliminado, no solo los duplicados de esa fila. por ejemplo, si hay 4 duplicados, los 4 deberían eliminarse, no 3, dejando una fila única de las 4.

EDIT2: Alternativamente, si puedo seleccionar todas las filas duplicadas (en lugar de tratar de seleccionar filas únicas), me parece bien. De cualquier manera puede llevarme a mi resultado final.

El código en el método de procesamiento:

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

junto con lo siguiente:

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta