Ich habe die Vorschläge von this post verfolgt, um zu versuchen, Distinct() in meinem Code zu arbeiten, aber ich habe immer noch Probleme. Hier sind die beiden Objekte Ich arbeite mit:Wie erhalte ich Distinct(), um mit einer Sammlung von benutzerdefinierten Objekten zu arbeiten
public class InvoiceItem : IEqualityComparer<InvoiceItem>
{
public InvoiceItem(string userName, string invoiceNumber, string invoiceAmount)
{
this.UserName = userName;
this.InvoiceNumber= invoiceNumber;
this.InvoiceAmount= invoiceAmount;
}
public string UserName { get; set; }
public string InvoiceNumber { get; set; }
public double InvoiceAmount { get; set; }
public bool Equals(InvoiceItem left, InvoiceItem right)
{
if ((object)left.InvoiceNumber == null && (object)right.InvoiceNumber == null) { return true; }
if ((object)left.InvoiceNumber == null || (object)right.InvoiceNumber == null) { return false; }
return left.InvoiceNumber == right.InvoiceNumber;
}
public int GetHashCode(InvoiceItem item)
{
return item.InvoiceNumber == null ? 0 : item.InvoiceNumber.GetHashCode();
}
}
public class InvoiceItems : List<InvoiceItem>{ }
Mein Ziel ist es, ein InvoiceItems
Objekt zu füllen (wir nennen es aBunchOfInvoiceItems
) mit ein paar tausend InvoiceItem
Objekte und dann tun:
InvoiceItems distinctItems = aBunchOfInvoiceItems.Distinct();
Wenn ich habe diesen Code und führen sie es aus, ich erhalte eine Fehlermeldung, die besagt,
kann nicht implizit Typ ‚System.Collections.Generic.IEnumerable‘ auf ‚InvoiceReader.Form1.Invo konvertieren iceItems ". Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?)
Ich verstehe nicht, wie das zu beheben ist. Sollte ich einen anderen Ansatz verfolgen? Irgendwelche Vorschläge werden sehr geschätzt.
+1 für "Implementieren IList stattdessen" –
Oooh Ihr Code hat zu viele Kompilierfehler, wenn Sie sie beheben, können Sie nicht impliziten Operator über eine Schnittstelle verwenden ... –