2009-02-11 9 views
5

Je rencontre des problèmes en lançant une requête LINQ qui rejoindra une table basée sur un code postal. J'ai besoin de rejoindre la table en fonction de savoir si le code postal du client se trouve dans une gamme de codes postaux qui est déterminée par les colonnes ZIPBEG et ZIPEND.LINQ Jointure entre les clauses

Le T-SQL ressemblerait à quelque chose comme ceci:

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] 

Répondre

12

Vous ne pouvez pas joindre spécifiquement à cette condition, le seul type de jointure qui est pris en charge est un offically basé sur l'égalité, que votre condition T-SQL n'est pas conforme à.

Au lieu de cela, vous devrez effectuer un produit cartésien puis filtrer sur les conditions appropriées:

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