Ändern Sie einen Wert in der Liste <T>

Ich habe eine Liste (wobei T eine benutzerdefinierte Klasse ist und Klasse einige Eigenschaften hat). Ich möchte wissen, wie man einen oder mehrere Werte mithilfe von Lambda-Ausdrücken ändert, sodass das Ergebnis mit dem foreach-Schleifenbalg übereinstimmt:

HINWEIS: Liste enthält mehrere Elemente in (mehrere Zeilen)

        foreach (MyClass mc in list)  
        {
            if (mc.Name == "height")
                mc.Value = 30;
        }

Und dies ist die linq-Abfrage (unter Verwendung von Lambda-Ausdrücken), die jedoch nicht mit der oberen foreach-Schleife identisch ist, sondern nur 1 Element (eine Zeile) aus der Liste zurückgibt!

Was ich möchte, ist, dass es alle Elemente (alle Zeilen) zurückgibt und NUR das entsprechende Element (die Elemente, die in den WHERE-Erweiterungsmethoden angegeben sind) ändert.

list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();

HINWEIS: Diese 2 Beispiele sind nicht gleich! Ich wiederhole, der Linq gibt nur 1 Element (eine Zeile) zurück, und das ist etwas, das ich nicht möchte. Ich brauche auch alle Elemente aus der Liste (wie bei foreach loop, es werden nur Änderungen vorgenommen, aber es werden keine Elemente entfernt).

Antworten auf die Frage(5)

Ihre Antwort auf die Frage