Mam 2 tabele, które mają stosunek do siebie do siebie.Jak to zrobić w Entity Framework (multiple where's or Join)?
Tabela A zawiera od 1 do wielu relacji z tabelą B, więc tworzy właściwość nawigacji w każdym z nich.
Teraz muszę sprawdzić wartość z tabeli A (userName) i muszę sprawdzić wartość z tabeli B (ClubId).
Więc w moim umyśle, to byłoby coś
Join the tables together
Where A.userName == "bob" &&
where B.clubId == "Car"
// return the count.
ale teraz wiem z Entity rzeczy należy zrobić dołącza rzadsze więc zastanawiam się, czy mogę to zrobić ze sprzężenia wtedy.
Próbowałem to
int count = Entity.TableA.where(a => a.userName == "bob" && a.TableB.where(i => i.ClubId == "Car")).Count();
tak to nie działa, ponieważ nie wróci odpowiedniego rodzaju (2-gi gdzie). Właśnie tak myślałem, jak będę się spodziewać, że to się uda.
Jak powinien wyglądać?
P.S
raczej mam przykład zrobić w metodzie zapytań LINQ jak ja powyżej.
Ah. Wow. Nie jestem pewien, co mi się bardziej podoba w jego przypadku. To selectMany mnie wyrzuca. Co się stanie, jeśli potrzebuję innego filtra? czy mogę dodać kolejną selectMany? Cóż, pierwsza składnia metody działa, nie wiem, czy działa wewnętrznie i robi drugą rzecz. Wszystkie zapytania miałyby ten sam czas wykonania. Co jest w drugim SelectMany one does. jak to jest = = a.TableB, (a, b) =>) zrobić? – chobo2
Zaktualizowałem wpis z poprawką w tłumaczeniu zapytania. Pierwsza SelectMany w zasadzie "spłaszcza" zagnieżdżoną kolekcję, zwracając sekwencję wszystkich B z wszystkich liter A. Drugi SelectMany akceptuje dwóch delegatów, "collectSelector", aby pobrać kolekcję B z A i "resultSelector", aby określić zwracaną wartość dla A i B.LINQ po prostu wybiera oba obiekty wejściowe, do wykorzystania w dalszej części zapytania. – dahlbyk