.net - net - linq join multiple conditions
LINQ Join On Between Clause (1)
Tengo algunos problemas al lanzar una consulta LINQ que se unirá a una tabla basada en un código postal. Necesito unirme a la mesa en función de si el código postal del cliente se encuentra dentro de un rango de códigos postales que está determinado por las columnas ZIPBEG y ZIPEND.
El T-SQL se vería así:
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]
No puede unirse específicamente a esta condición, el único tipo de combinación que se admite oficialmente es uno basado en la igualdad, que su condición en T-SQL no se ajusta.
En su lugar, deberá realizar un producto cartesiano y luego filtrar en las condiciones apropiadas:
from c in customers
from z in zips
where
z.ZipBeg <= c.ZipCode && c.ZipCode <= z.ZipEnd
select
c