w app konsoli, od statycznej metody w głównym programie klasy wzywam:Dlaczego nie sposób wykonać od wewnątrz LINQ Gdzie metoda
internal class Module
{
public bool EnsureModuleLocalInstall()
{
if (CheckModuleUpToDateLocal())
return true;
else if (DownloadComponentData())
if(InstallModuleLocal())
return true;
return false;
}
}
var availableModules = new List<Module>();
... // Add several 'Modules' to list
var installed = availableModules.Where(m => m.EnsureModuleLocalInstall());
mam zarówno ustawić break-punkt, a również sprawdził oczekiwany wynik (moduł zainstalowany lokalnie), ale ze wszystkich wskazań metoda "CheckModuleLocalInstall" nie jest wykonywana.
Czy brakuje mi czegoś oczywistego, czy też oczekuję zbyt wiele od metody LINQ "Gdzie" i czy powinienem używać LINQ ForEach?
Rozumiesz [wykonanie odroczonej] (http://blogs.msdn.com/b/charlie/archive/2007/12 /09/deferred-execution.aspx)? –
Zasadniczo LINQ nie nadaje się do definiowania i uruchamiania zapytań z efektami ubocznymi. Nie dziwi, że oczekiwano wywołania metody, ponieważ ** zdefiniowałeś zapytanie. –
Tak, i dziękuję. Żenujące- wszystko, co musiałem zrobić, to dodać ToList(). – Pricey