Mam niektóre listy (gdzie T jest niestandardową klasą, a klasa ma niektóre właściwości). chciałbym wiedzieć jak zmienić jedną lub więcej wartości inide z nim za pomocą Lambda wyrażeń, więc wynik będzie taki sam, jak w pętli foreach poniżej:Zmienić niektóre wartości wewnątrz listy <T>
UWAGA: Lista ta zawiera wiele elementów wewnątrz (kilka wierszy)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
I tego zapytania LINQ (przy użyciu wyrażeń lambda), ale to nie jest taka sama jak w górnej pętli foreach, tylko zwraca 1 produkt (jeden rząd) z listy!
Co chcę jest, że zwraca wszystkie elementy (wszystkie wiersze), a tylko chnages odpowiedni jeden (towary określone w WHERE metodzie (-ach) przedłużeniu
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
. UWAGA: te 2 Przykład to nie to samo! Powtarzam, linq zwraca tylko 1 pozycję (jeden wiersz), a to jest coś, czego nie chcę, potrzebuję również wszystkich elementów z listy (jak pętla foreach, tylko zmiany, ale nie usuń dowolną pozycję)
* Dlaczego * czy chcesz używać wyrażeń lambda? Kod 'foreach' działa dobrze i jest prosty. LINQ służy do * wyszukiwania danych * bez mutowania. –
Gdzie, z definicji, zwraca tylko pasujące rekordy. Zasadniczo: to nie jest to, czego chcesz - po prostu użyj foreach –
Cześć Jon, znam pętlę foreach, jeśli to ciasto i szybciej, ale chciałbym się nauczyć, to wszystko. Dla niektórych "małych" kodów będzie dobrze. Ale chodzi głównie o to, żeby się uczyć. –