Frage

Die heutige Problem in meinem Code ist irgendwie seltsam, und ich konnte es noch nicht reproduzieren. Ich arbeite mit einer typisierten Datensatz (mit dem Designer erstellt wird) und ich bin Schleifen über alle Zeilen in einer Datentabelle.

Manchmal (!), Wenn sie über Primärschlüssel zu finden, ist die zurückgegebene Reihe zum einen von dem Enumerator nicht gleich. Dies ist einiger Code, den ich schrieb, das Problem zu reproduzieren:

foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
    if(ds.DataTable1.FindById(dr.Id) != dr)
        Console.Write(dr.Id);
}

Es wird keine Zeile auf die Konsole geschrieben werden, weil FindById immer wieder die gleiche Zeile, die eigentlich logisch ist. In meinem Projekt-Code, mit einem ähnlichen Datensatz mit einigen String Spalten, in etwa 3% der Reihen (immer die gleichen Zeilen!) Dies nicht der Fall, und einer der String Felder ist gerade leer:

ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason

Der Primärschlüssel ist das einzige Primärschlüsselfeld, und daher ist eine FindById erzeugt Methode. Kennt jemand einen kleinen Hinweis oder hat das gleiche Problem auftreten, bevor? Ich fürchte, es ist ein sehr, sehr spezieller Fall, den ich gemacht, dass dieser Fehler oder Funktion ermöglicht. :)

Ich dachte über die Möglichkeit dieses Seins von der Besetzung durch die Aufzählung erfolgt erzeugt. Der enumerator funktioniert mit dem DataRow Basistyp der erzeugten typisierten Reihen. Aber ich habe nicht etwas falsch dort finden ...

Prost Matthias

War es hilfreich?

Lösung

Was ist die Art der Sie Primärschlüssel? das DataSet hat einen subtilen Fehler für den Vergleich Guids (und möglicherweise andere Werte). Der Guid Fehler hat nur mit bestimmten Guid Werten zu tun und in der Regel gut funktioniert.

Hinweis: Wenn ich einen Fehler sagen, ich meine, ich weiß, dass ein Fehlerbericht angenommen wurde, aber ich weiß nicht, ob es auch fix gewesen ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top