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%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:
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>
:
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.
Tags und Links .net-4.0 lambda expression c#-4.0