Jak psát SELECT FROM MojeTabulka WHERE id IN (SELECT ...) v LINQ?

hlasů
7

Jak se vám přepsat v LINQ?

SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)

Takže v plain anglicky, chci vybrat ID a jméno z TableA kde Id TABLEA je v důsledku nastavené z druhého dotazu.

Položena 05/09/2008 v 13:22
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
9

from a in TableA 
where (from b in TableB 
       join c in TableC on b.id equals c.id
       where .. select b.id)
.Contains(a.Id) 
select new { a.Id, a.Name }
Odpovězeno 05/09/2008 v 13:27
zdroj uživatelem

hlasů
4

LINQ podporuje ve formě obsahuje. Myslet "collection.Contains (id)" namísto "id IN (sbírka)".

from a in TableA
where (
    from b in TableB
    join c in TableC
        on b.id equals c.id
    select b.id
).Contains(TableA.Id)
select new { a.Id, a.Name }

Viz též tento blog příspěvek .

Odpovězeno 17/09/2008 v 19:36
zdroj uživatelem

hlasů
1

Neexistuje žádný z krabice podporu pro IN v LINQ. Musíte připojit 2 dotazy.

Odpovězeno 05/09/2008 v 13:27
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more