linq to sql - principiantes - linq a sql: une varias columnas de la misma tabla
mayor o igual linq (5)
En VB:
dim qry = FROM t1 in table1 _
JOIN t2 in table2 on t2.ID equals t1.ID _
AND t2.Country equals t1.Country
¿Cómo unir internamente múltiples columnas de las mismas tablas a través de Linq?
Por ejemplo: ya tengo esto ...
join c in db.table2 on table2.ID equals table1.ID
Necesito agregar esto ...
join d in db.table2 on table2.Country equals table1.Country
Puede colocar su consulta dentro de una cláusula Where en lugar de usar el operador join.
El operador de unión admite varias cláusulas en VB.NET, pero no en C #.
Alternativamente, puede usar el estilo ANSI-82 de la sintaxis ''SQL'', por ejemplo:
from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
de http://www.onedotnetway.com/linq-to-sql-join-on-multiple-conditions/
Ambas tablas tienen PostCode y CouncilCode como campos comunes. Digamos que queremos recuperar todos los registros de ShoppingMall donde coinciden tanto PostCode como CouncilCode en House. Esto requiere que hagamos una unión usando dos columnas. En LINQ tal unión se puede hacer usando tipos anónimos. Aquí hay un ejemplo.
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new { s.CouncilCode, s.PostCode }
equals
new { h.CouncilCode, h.PostCode }
select s;
Esta es la única forma en que pude hacer que funcione (en c #).
var qry = from t1 in table1
join t2 in table2
on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
...
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new {CouncilCode=s.CouncilCode, PostCode=s.PostCode }
equals
new {CouncilCode=h.District, PostCode=h.ZipCode }
select s;
Esto es aplicable para cualquier tipo de tipo de datos.