Benutzer-Definierte Klasse Liste die Fehlermeldung "Fehler beim vergleichen von zwei Elementen im array"

Ich habe einige code, der eine Liste aus der custom class-Objekte genannt (Zahlungen) und sortiert Sie nach Datum, als unten:

payments.Sort(delegate(Payments p1, Payments p2) { return p1.GetDate().CompareTo(p2.GetDate()); });

die GetDate () - Methode und die Bezahlung ist Klasse unten:

public class Payments 
{
    public string Date { get; set; }
    public string Payment { get; set; }
    public string Reference { get; set; }
    public decimal Amount { get; set; }

    public DateTime GetDate()
    {
        return DateTime.Parse(this.Date);
    }

}

Einmal die Liste sortiert ist, dass ich manuell durchgehen und vergleichen Sie das Datum, um das Datum auf den nächsten. Wenn Sie unterschiedlich sind, dann passiert nichts, wenn Sie das gleiche dann habe ich die Daten zusammengeführt werden, in dem Zahlungen, die zusammen in einer einzigen Zahlung. Ich habe dann entfernen Sie die beiden Zahlungen wurden verglichen, und fügen Sie dann die neue ein, die Liste wird dann neu geordnet und fortgesetzt, bis die Liste wird einmalig nach Datum.

Bis vor kurzem wurde dies gut funktioniert, ohne Probleme. Aber ab heute gibt es schon mehrere Fälle von es erroring mit der Meldung "Fehler beim vergleichen von zwei Elementen im array".

Ich schaute herum, aber ich habe nicht das Gefühl, dass ich genug wissen über das, was sein könnte, wodurch es zu bequem änderungen an meinem code. Kann mir jemand helfen zu verstehen, was wäre dieses Problem verursachen, und der beste Weg, um es zu beheben?

Dank

  • Sind Sie sicher, dies ist die richtige version der Methode GetDate? You ' r verwenden Sie es als eine Erweiterung Methode, aber es ist nicht so definiert.
  • Ja das ist richtig, ich habe den editierten post oben zu zeigen, wie es sitzt innerhalb der Zahlungs-Klasse selbst
  • Dies ist, wenn jeder lernt, die .NET datetime-Typ nicht funktioniert, für das Jahr 2014
  • Haben Sie überprüft, Datum, Wert in p1 und p2?
  • Ich habe die Termine, an denen Sie Hinzugefügt wurden, und Sie Schienen, um zu zeigen, das richtige Datum, die sowohl heutige Datum (02/01/2014)
  • Was ist die variable Vergütung? Ist es die Liste<Zahlungen>? Dann Zahlungen sollten implementieren IComparable.
  • Ja, es ist List<Zahlungen>. Wie würde ich das implementieren IComparable?
  • msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs. 110).aspx

InformationsquelleAutor jimminybob | 2014-01-02
Schreibe einen Kommentar