/ / Jak napisać linq, aby uzyskać dane z różnych tabel? - linq

Jak napisać linq, aby uzyskać dane z różnych tabel? - linq

Załóżmy, że mam 3 tabele: A (pomoc, ...), B (oferta, ...) Relacja (pomoc, oferta, ...) Potem mam pomoc jako parametr, chcę uzyskać wynik z b. Jeśli użyjesz SQL, będzie jak

select b.* from B join Relationship on b.bid = Relationship.bid
where relationship.aid = aid_param

jak napisać linq z takim samym wynikiem jak powyżej SQL. (w tym przypadku klucz obcy nie został poprawnie utworzony)?

Odpowiedzi:

1 dla odpowiedzi № 1

Zakładając, że dodałeś projektantatwoich tabel do kontekstu danych LINQ i masz albo relacje kluczy obcych zdefiniowane w bazie danych, albo ręcznie kodujesz powiązania w projektancie, powinieneś po prostu móc odwoływać się do tabeli B i jej właściwości EntitySet of Relationship, filtrowane według parametr i sprawdź, czy są jakieś dopasowania.

var relationships = db.B.Any( b => b.Relationships.Where( r => r.aid == aid_param ) );

0 dla odpowiedzi nr 2
var bQuery = from r in MyContext.Relationship
where r.aid == aid_param
select r.B;

Jeśli nie masz relacji ustawionej w modelu, możesz:

var bQuery = from b in myContext.B
where myContext.Relationship
.Any( r => r.aid == aid_param && b.bid == r.bid)
select b;

0 dla odpowiedzi № 3

var output = z b
z relacji
gdzie (b.bid = Związek.bid,
związek.aid =param_param)