2009-02-11 14 views
5

Mam pewne problemy zrzucaniem zapytania LINQ, które zostanie dołączone do tabeli na podstawie kodu pocztowego. Muszę dołączyć do tabeli na podstawie tego, czy kod pocztowy klienta leży w zakresie kodów pocztowych określonych przez kolumny ZIPBEG i ZIPEND.LINQ Dołączanie między klauzulą ​​

T-SQL będzie wyglądać mniej więcej tak:

JOIN [ZipCodeTable] [zips] 
    ON [customer].[zipcode] BETWEEN [zips].[ZIPBEG] AND [zips].[ZIPEND] 

-- or 

JOIN [ZipCodeTable] [zips] 
    ON [zips].[ZIPBEG] <= [customer].[zipcode] 
     AND [zips].[ZIPEND] >= [customer].[zipcode] 

Odpowiedz

12

Nie można dołączyć specjalnie na ten warunek, jedyny rodzaj przyłączenia, który jest oficjalnie wspierany jest jeden oparty na równości, które twój stan w T-SQL nie jest zgodny z.

Zamiast tego, trzeba będzie wykonać iloczyn kartezjański, a następnie filtrować na odpowiednich warunkach:

from c in customers 
from z in zips 
where 
    z.ZipBeg <= c.ZipCode && c.ZipCode <= z.ZipEnd 
select 
    c