Linq Wählen und aggregieren innerhalb einer einzelnen Iteration

8

Gibt es eine Möglichkeit, dies mit linq zu tun, ohne die fooCollection zweimal zu nummerieren?

%Vor%     
Nick 17.10.2012, 14:22
quelle

4 Antworten

10

Ja, Sie können die Methode Enumerable.Aggregate verwenden:

%Vor%

Dies hat den Vorteil, dass es frei von Nebenwirkungen ist. Ich mag Nebenwirkungen in meinem LINQ nicht. =)

    
Jens 17.10.2012, 14:38
quelle
2

Es gibt eine Möglichkeit, aber ich betrachte es als Hack:

%Vor%

Ich würde mit der Schleife gehen, die Sie bereits haben. Es ist viel sauberer als jede LINQ-Lösung, die Sie sich vorstellen können.

    
Daniel Hilgarth 17.10.2012 14:30
quelle
1

Sie könnten dies tun:

%Vor%

Ich würde empfehlen, den Inhalt nicht in einen String zu verketten, sondern stattdessen ein StringBuilder zu verwenden.

BEARBEITEN

Wenn Sie keine LINQ-Erweiterungsbibliothek haben, die ForEach für IEnumerable implementiert, können Sie hier eine Methode verwenden:

%Vor%     
Roy Dictus 17.10.2012 14:28
quelle
0

Sie fragen nach einer Linq-Anweisung, die zwei Ergebnisse liefert. Die ganze Idee von linq ist es, einen prägnanten funktionalen Programmierstil ohne Nebenwirkungen zu ermöglichen.

Wenn Sie mehrere Ergebnisse und eine gute Leistung wünschen, sollten Sie Linq nicht verwenden und eine normale foreach verwenden.

    
user180326 17.10.2012 14:39
quelle

Tags und Links