Lambda-Ausdrücke - Legt den Wert einer Eigenschaft in einer Auflistung von Objekten basierend auf dem Wert einer anderen Eigenschaft in der Auflistung fest

8

Ich bin neu bei Lambda-Ausdrücken und versuche, die Syntax zu nutzen, um den Wert einer Eigenschaft in einer Sammlung basierend auf einem anderen Wert in einer Sammlung festzulegen

Normalerweise würde ich eine Schleife machen:

%Vor%     
Michael Rut 26.05.2010, 19:05
quelle

1 Antwort

14

LINQ ist im Allgemeinen besser zum Auswählen von Daten als zum Ändern von Daten geeignet. Sie könnten jedoch so etwas schreiben:

%Vor%

Dies wählt zuerst Elemente aus, die geändert werden müssen, und ändert dann alle unter Verwendung einer standardmäßigen imperativen Schleife. Sie können die foreach -Schleife durch die ForAll -Methode ersetzen, die für Listen verfügbar ist, aber ich glaube nicht, dass dies einen Vorteil bringt:

%Vor%

Beachten Sie, dass Sie ToList in der Mitte hinzufügen müssen, da ForEach eine .NET 2.0-Funktion ist, die nur für List<T> type verfügbar ist - nicht für alle IEnumerable<T> -Typen (wie andere LINQ-Methoden). Wenn Ihnen dieser Ansatz gefällt, können Sie ForEach für IEnuerable<T> :

implementieren %Vor%

Wie auch immer, ich würde foreach loop bevorzugen, weil dadurch auch deutlich wird, dass Sie eine Mutation machen - und es ist nützlich, diese Tatsache im Code leicht zu sehen.

    
Tomas Petricek 26.05.2010, 19:09
quelle

Tags und Links