2013-07-04 10 views
19

Czy jest możliwe dodanie if -zawierające połączenie LINQ ForEach?Czy LINQ ForEach have if statement?

sequence.Where(x => x.Name.ToString().Equals("Apple")) 
     .ToList() 
     .ForEach(/* If statement here */); 
+1

Pytanie nie jest jasne – zerkms

+8

Nie ma metody LINQ 'ForEach'. To jest metoda 'List'. –

+0

Co chciałbyś umieścić w 'if', którego nie można użyć jako predykatu w' Where'? –

Odpowiedz

3

Tak, potrzeba wyrażenia lambda, dzięki czemu można umieścić dowolny prawidłowy C# wyrażenie tam

+0

Nie powiedziałbym _any _... Istnieją pewne konstrukcje, których API wyrażeń nie może reprezentować. –

+2

Och, przepraszam, mój komentarz nie ma tutaj zastosowania. Tworzymy tutaj delegata, a nie wyrażenie. IIRC, te same ograniczenia nie dotyczą delegatów, można użyć dowolnego konstruktu. –

33

można wykonać następujące czynności ...

List.Where(x => x.Name.ToString().Equals("Apple").ToList() 
    .ForEach(x => { if(x.Name == ""){}}); 
22

Tak, jeśli to-oświadczenie często używane wewnątrz ForEach, jak poniżej:

sequence.Where(x => x.Name.ToString().Equals("Apple")) 
    .ToList() 
    .ForEach(x => 
    { 
     if(someCondition) 
     { 
     // Do some stuff here. 
     } 
    });