To naprawdę powinno być łatwe, ale po prostu nie może się dogadać sam interfejs nie jest na tyle intuicyjny ... :(Zaznaczanie wszystkich obiektów podrzędnych w Linq
Powiedzmy mam State
tabelę, a Chcę zaznaczyć wszystkie Counties
z wielu States
w SQL byłoby.
select c.*
from State s join County c on c.StateCode = s.StateCode
where s.TimeZone = -5 -- or some other criteria
powyższy przykład jest dosyć banalna do konwersji Linq w statycznym kontekstu:
var q = MyDataContext.GetTable<County>().Where(c => c.State.TimeZone = -5);
Ale gdzie zaczyna coraz skomplikowana jest sytuacja, gdy chcę bardziej wrażliwe zapytania kontekstowe, takie jak:
public static List<County> GetCountiesForStates(List<State> states) {
// gotta do something to return all the counties for all these states
}
Teraz mógłby zrobić coś jak to wewnątrz tej metody:
var q = MyDataContext.GetTable<County>().Where(c => states.Contains(c.State));
ale IMO to jest naprawdę nieeleganckie, ponieważ (a) muszę uzyskać statyczne MyDataContext
zamiast używać niejawnego kontekstu danych obiektów stanu i (b) pracujesz wstecz, a jeśli zaczniesz komplikować zapytanie dalej, robi się jeszcze brzydsza.
Czy istnieje sposób uruchamiania frazę:
var q = states... // or "from s in states..."
instynktownie, chcę wierzyć, można to zrobić, ale jeszcze nie znalazł drogę ...
+1 za włączenie rozszerzenia lambda. –
Właśnie tego chciałem - DZIĘKUJĘ! –
Po prostu mała literówka - powinno być "countries.Where (c => c.Property) etc ... –