usar principiantes para metodos mayor instrucciones igual diferente consultas como avanzadas linq-to-sql join

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.