2013-09-25 21 views
7

Witam Próbuję zrozumieć różnice między All i ForEach w Linq.Linq All Vs Foreach

Wiem, że Wszystkie służy do sprawdzania warunku i zwraca wartość bool, jeśli predykat jest spełniony. Ale gdy mam przypisanie wewnątrz predykatu, po prostu działa dobrze i nie narzekają.

W jakim przypadku korzysta się z ForEach? Albo, co sprawia, że ​​przypadki korzystania z ForEach

To może być trochę głupie, ale trzeba znać znaczenia

+4

'ForEach' nie jest częścią LINQ. LINQ jest funkcjonalny, dlatego nie ma miejsca na coś takiego jak "ForEach". –

Odpowiedz

13

Jest rzeczywiście nie ForEach w LINQ (celowo). Istnieje metoda , która uruchamia akcję dla każdego obiektu na liście.

Główna różnica to All jest filtrem - zwraca wartość true, jeśli wszystkie elementy są zgodne z predykatem. istnieje w celu tworzenia efektów ubocznych - uruchamiasz operację na każdym elemencie na liście.

Ogólnie, chciałbym uniknąć zapytań z LINQ, które powodują efekty uboczne (tj .: nie wykonuj operacji w zapytaniu), i zamiast tego umieść je później w pętli foreach. To sprawia, że ​​zamiar jest bardzo jasny, co pomaga w utrzymaniu.

Pamiętaj, że został faktycznie usunięty z frameworka WinRT, ponieważ naprawdę nie dodaje dużej wartości. Eric Lippert napisał great article on the subject korzystania z foreach zamiast .

+0

Zastanawiałem się nad możliwością LINQ również posiadania foreach, ładny link do tego artykułu – Alan