Ich habe den folgenden Code:geteilt eine Liste mit Linq
var e = someList.GetEnumerator();
var a = new List<Foo>();
var b = new List<Foo>();
while(e.MoveNext()) {
if(CheckCondition(e.Current)) {
b.Add(e.Current);
break;
}
a.Add(e.Current);
}
while(e.MoveNext())
b.Add(e.Current)
Diese hässlich aussieht. Im Grunde iterieren Sie durch eine Liste und fügen Elemente zu einer Liste hinzu, bis eine Bedingung eintritt, und fügen den Rest einer anderen Liste hinzu.
Gibt es einen besseren Weg, z.B. mit linq? CheckCondition() ist teuer, und die Listen können riesig sein, also würde ich lieber nichts tun, was die Listen zweimal wiederholt.
ich Ihren Code zu verstehen, aber 'if (e.Current)' macht keinen Sinn. Ich denke, Sie möchten den Wert des letzten 'MoveNext'-Aufrufs (von der ersten Schleife) speichern und prüfen, ob es erfolgreich war. – Ani
Aktualisiert, um mehr Sinn zu machen (d. H., E.Current zu "b" hinzufügen, sobald CheckCondition wahr ist, anstatt dieses Element außerhalb der Schleife zu behandeln – Anonym
Ja, es ist jetzt klar. – Ani