Überprüfen Sie, ob die Liste & lt; t & gt; enthält eine andere Liste
Habe ich eine Liste von Parametern:
public class parameter
{
public string name {get; set;}
public string paramtype {get; set;}
public string source {get; set;}
}
IEnumerable<Parameter> parameters;
Und ein array von strings ich möchte prüfen, es gegen.
string[] myStrings = new string[] { "one", "two"};
Ich soll zum Durchlaufen der Liste " parameter und überprüfen Sie, ob die source-Eigenschaft ist gleich eine der myStrings array. Ich kann dies mit verschachtelten foreach-aber ich würde gerne erfahren, wie es in einer netteren Art und Weise, wie ich gespielt haben, um mit linq und wie die Erweiterung Methoden auf zählbare, wie, wo etc, so dass verschachtelte foreachs fühlt sich einfach falsch. Gibt es eine elegantere bevorzugt linq/lambda/delegete Weg, dies zu tun.
Dank
InformationsquelleAutor der Frage gdp | 2012-06-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könntest du eine geschachtelte
Any()
für diese überprüfung, die verfügbar ist auf jedenEnumerable
:Schneller durchführen von größeren Sammlungen wäre zu Projekt
parameters
zusource
und verwenden Sie dannIntersect
die intern einHashSet<T>
also anstatt O(n^2) für den ersten Ansatz (den Gegenwert von zwei verschachtelten Schleifen) können Sie das check-in O(n) :Auch als eine Randnotiz, sollten Sie nutzen Ihren Klassennamen und die Namen der Eigenschaft entsprechen, die C# - Stil-Richtlinien.
InformationsquelleAutor der Antwort BrokenGlass