Ermitteln von Duplikaten in einer Datentabelle

Ich habe eine Datentabelle, die ich aus einer CSV-Datei geladen habe. Ich muss anhand von zwei Spalten feststellen, welche Zeilen Duplikate sind (product_id undowner_org_id) in der Datentabelle. Sobald ich das festgestellt habe, kann ich diese Informationen verwenden, um mein Ergebnis zu erstellen. Dabei handelt es sich um eine Datentabelle, die nur die Zeilen enthält, die nicht eindeutig sind, und eine Datentabelle, die nur die Zeilen enthält, die eindeutig sind.

Ich habe mir hier andere Beispiele angesehen, und der Code, den ich bisher erstellt habe, wird kompiliert und ausgeführt, aber anscheinend ist jede Zeile in den Daten einzigartig. In Wirklichkeit gibt es in den Testdaten 13 Zeilen und nur 6 sind eindeutig. Also mache ich offensichtlich etwas falsch.

BEARBEITEN: Dachte ich sollte beachten, sollten Zeilen, die Duplikate habenALLES entfernt werden, nicht nur die Duplikate dieser Zeile. zB wenn es 4 Duplikate gibt, sollten alle 4 entfernt werden, nicht 3, so dass eine einzige Zeile von den 4 übrig bleibt.

EDIT2: Wenn ich alternativ alle doppelten Zeilen auswählen kann (anstatt zu versuchen, eindeutige Zeilen auszuwählen), ist dies für mich in Ordnung. So oder so kann ich zu meinem Endergebnis kommen.

Der Code in der Verarbeitungsmethode:

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

zusammen mit den folgenden:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage