Ich habe 3 (Edit) sich gegenseitig ausschließende IEnumerables, über die ich iterieren möchte. Ich möchte so etwas machen:
%Vor%Der beste Weg, an den ich denken kann, ist:
%Vor%Gibt es einen prägnanteren Weg, dies zu tun? Es scheint so, als würde die Kombination von IEnumberables trivial sein.
Mit LINQ:
%Vor% Für Info ist der Unterschied zwischen Union
und Concat
, dass Union
zusätzliche Arbeit leistet, um die Eindeutigkeit zu garantieren; Wenn Sie also keine Duplikate erwarten (oder alternativ: nichts dagegen haben), ist Concat
schneller.
Wie in anderen Antworten erwähnt, unternimmt Union zusätzliche Arbeit, um Dubletten zu eliminieren, Concat verkettet einfach die Sequenzen. Wie ich in einem Kommentar oben bemerkt habe, gibt es jedoch Leistungskosten für tief verschachtelte Konkat. Sie könnten auch einen SelectMany-Befehl verwenden, um eine Reihe von Iteratoren zu reduzieren:
%Vor%Sie könnten feststellen, dass Sie flexibler sein sollten, wenn Sie feststellen, dass Sie tatsächlich über mehr als drei zu iterierende Listen verfügen.
Mit LINQ:
%Vor%Für Info ist der Unterschied zwischen %code% und %code% , dass %code% zusätzliche Arbeit leistet, um die Eindeutigkeit zu garantieren; Wenn Sie also keine Duplikate erwarten (oder alternativ: nichts dagegen haben), ist %code% schneller.
Ich habe 3 (Edit) sich gegenseitig ausschließende IEnumerables, über die ich iterieren möchte. Ich möchte so etwas machen:
%Vor%Der beste Weg, an den ich denken kann, ist:
%Vor%Gibt es einen prägnanteren Weg, dies zu tun? Es scheint so, als würde die Kombination von IEnumberables trivial sein.
Gibt es einen Grund, warum Sie es in einer Schleife machen müssen? Wenn ja, ist der zweite Weg wahrscheinlich der beste. Es gibt nichts, was wie der erste Weg funktioniert.
Wenn es nicht zwingend notwendig ist, dies in einer Schleife zu tun, würde ich es in drei Schleifen machen, die zeiteffizienter sind.
Wie in anderen Antworten erwähnt, unternimmt Union zusätzliche Arbeit, um Dubletten zu eliminieren, Concat verkettet einfach die Sequenzen. Wie ich in einem Kommentar oben bemerkt habe, gibt es jedoch Leistungskosten für tief verschachtelte Konkat. Sie könnten auch einen SelectMany-Befehl verwenden, um eine Reihe von Iteratoren zu reduzieren:
%Vor%Sie könnten feststellen, dass Sie flexibler sein sollten, wenn Sie feststellen, dass Sie tatsächlich über mehr als drei zu iterierende Listen verfügen.
Gibt es einen Grund, warum Sie es in einer Schleife machen müssen? Wenn ja, ist der zweite Weg wahrscheinlich der beste. Es gibt nichts, was wie der erste Weg funktioniert.
Wenn es nicht zwingend notwendig ist, dies in einer Schleife zu tun, würde ich es in drei Schleifen machen, die zeiteffizienter sind.
Tags und Links c# ienumerable foreach