Dies nur für Allgemeinwissen:
Wenn ich zwei habe, sagen wir List , und ich möchte beide mit derselben foreach-Schleife iterieren, können wir das tun?
Bearbeiten
Um dies zu verdeutlichen, wollte ich Folgendes tun:
List<String> listA = new List<string> { "string", "string" };
List<String> listB = new List<string> { "string", "string" };
for(int i = 0; i < listA.Count; i++)
listB[i] = listA[i];
Aber mit einem foreach =)
Antworten:
Dies wird als Zip- Operation bezeichnet und in .NET 4 unterstützt.
Damit könnten Sie etwas schreiben wie:
Alternativ zum anonymen Typ mit den benannten Feldern können Sie auch geschweifte Klammern verwenden, indem Sie ein Tupel und seinen statischen Tuple verwenden. Helfer erstellen:
quelle
foreach ((var number, var word) in numbers.Zip(words, (n, w) => (n, w))) { ... }
.Wenn Sie nicht auf .NET 4.0 warten möchten, können Sie Ihre eigene
Zip
Methode implementieren . Das Folgende funktioniert mit .NET 2.0. Sie können die Implementierung anpassen, je nachdem, wie Sie den Fall behandeln möchten, in dem die beiden Aufzählungen (oder Listen) unterschiedlich lang sind. Dieser wird bis zum Ende der längeren Aufzählung fortgesetzt und gibt die Standardwerte für fehlende Elemente aus der kürzeren Aufzählung zurück.quelle
Sie können Union oder Concat verwenden. Ersteres entfernt Duplikate, letzteres nicht
quelle
Hier ist eine benutzerdefinierte IEnumerable <> -Erweiterungsmethode, mit der zwei Listen gleichzeitig durchlaufen werden können.
quelle
Seit C # 7 können Sie Tupel verwenden ...
quelle
(x, y) => (x, y)
wir benanntetuple.x
undtuple.y
elegante verwenden. Die zweite Form könnte also auch sein(Num, Word) => (Num, Word)
Nein, dafür müssten Sie eine for-Schleife verwenden.
Sie können so etwas nicht tun
quelle
Wenn Sie ein Element mit dem entsprechenden möchten, können Sie dies tun
Dies gibt true zurück, wenn jedes Element dem entsprechenden Element in der zweiten Liste entspricht
Wenn das fast, aber nicht ganz das ist, was Sie wollen, würde es helfen, wenn Sie mehr ausarbeiten würden.
quelle
Diese Methode würde für eine Listenimplementierung funktionieren und könnte als Erweiterungsmethode implementiert werden.
quelle
Sie können auch einfach eine lokale Ganzzahlvariable verwenden, wenn die Listen dieselbe Länge haben:
quelle
Sie können auch Folgendes tun:
quelle
Ich verstehe / hoffe, dass die Listen die gleiche Länge haben: Nein, Ihre einzige Wette besteht darin, einen einfachen alten Standard für die Schleife zu verwenden.
quelle