Bazı listeye sahibim (burada T özel bir sınıftır ve sınıfın bazı özellikleri vardır). Ben istiyorum Lambda İfadeleri kullanarak bunun inide bir veya daha fazla değerleri değiştirmek için bilmek, bu nedenle sonuç feryat foreach döngüsünde aynı olacaktır:Listenin içinde bir miktar değeri değiştirin <T>
NOT: Liste içine birden çok öğe içerir (çoklu satır)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
Ve bu linq sorgusu (Lambda ifadeleri kullanarak), ancak üst foreach döngüsü olarak aynı değildir, sadece listeden 1 öğe (bir satır) döndürür!
İstediğim tüm öğeleri (tüm satırlar) döner ve SADECE uygun olanı (WHERE uzatma yöntemi (ler) de belirtilen ürün chnages yani,
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
NOT:. Bu 2 örnek aynı değil! Ben, linq sadece 1 madde (bir satır) döndürür ve bu ben istemiyorum bir şey, ben de listeden tüm öğeleri gerekir (foreach döngü gibi, sadece değişiklikler yapar, ama değil Herhangi bir öğeyi kaldırın ...
* Neden * lambda ifadelerini kullanmak istiyorsunuz? 'Foreach' kodu iyi çalışıyor ve basit. LINQ, * verileri sorgulamak için değil, sorgulamak içindir. –
Tanım olarak, yalnızca eşleşen kayıtları döndürür. Temel olarak: istediğin bu değil - sadece foreach kullanın –
Merhaba Jon, foreach döngü biliyorum çünkü hamuru ve daha hızlı, ama öğrenmek istiyorum, hepsi bu. Bazı "küçük" kodlar için sadece iyi yapacağız. Ama asıl mesele çoğunlukla yaşıyor. –