2009-02-11 14 views
5

Sto riscontrando alcuni problemi nel mettere insieme una query LINQ che si unirà a una tabella basata su un codice postale. Ho bisogno di unire la tabella in base al fatto che il codice postale del cliente si trovi in ​​una gamma di codici postali determinata dalle colonne ZIPBEG e ZIPEND.LINQ Join On Between Clausola

Il T-SQL sarebbe simile a questa:

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] 

risposta

12

Non si può specificamente aderire a questa condizione, l'unico tipo di join che è ufficialmente supportati è uno basato sulla parità, che la sua condizione in T-SQL non è conforme a.

Invece, si dovrà eseguire un prodotto cartesiano e poi filtrare sulle condizioni appropriate:

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