Como hacer esta consulta en LinQ

31/03/2010 - 16:04 por Paul | Informe spam
Hola,
Como puedo hacer la siguiente consulta en LinQ

Selec t1.Id, t1.Campo2, t2.IdTabla1
FORM Tabla1 t1 left join Tabla2 t2
ON t1.Id==t2.IdTabla1 OR t1.Id==t2.IdTabla1Bis

Es importante la condicion del OR, ya que sin ella la se hacer, es
decir que he logrado hacer esta:
Selec t1.Id, t1.Campo2, t2.IdTabla1
FORM Tabla1 t1 left join Tabla2 t2
ON t1.Id==t2.IdTabla1

var reultado=from t1 in Tabla1
join t2 in Tabla2
on t1.Id equals t2.IdTabla1 into leftJoin
from t2 in leftJoin.DefaultIfEmpty()
select new
{
Campo1=t1.Id,
Campo2=t1.Campo2,
Campo3=t2.IdTabla1
};

Pero como puedo pober el "OR"??

Gracias
 

Leer las respuestas

#1 Sashka
31/03/2010 - 18:19 | Informe spam
Hasta donde yo se... no puedes, join en linq sólo acepta "equals", incluso
si tienes un left join de varios campos podrías hacerlo, pero no veo como
con un "or".

Lo que si podrías hacer es 2 join, es decir componer tu consulta (se me hace
menos eficiente, pero no veo otra forma)...

var customLeftJoin (from t1 in Tabla1
join t2 in Tabla2 on t1.Campo1 equals t2.Campo1 into Desc
from lj1 in Desc.DefaultIfEmpty()
join t2 in Tabla2 on t1.Campo2 equals t2.Campo2 into Desc2
from lj2 in Desc2.DefaultIfEmpty()
select new
{
c1 = lj1.Campo1,
c2 = t1.Campo5,
c3 = t1.Campo6,
c4 = lj2.Campo2 == null ? -1 : lj2.Campo2
});

var lista= customLeftJoin.ToList();

Espero te sirva,

Sashka

"Paul" escribió en el mensaje de
noticias:
Hola,
Como puedo hacer la siguiente consulta en LinQ

Selec t1.Id, t1.Campo2, t2.IdTabla1
FORM Tabla1 t1 left join Tabla2 t2
ON t1.Id==t2.IdTabla1 OR t1.Id==t2.IdTabla1Bis

Es importante la condicion del OR, ya que sin ella la se hacer, es
decir que he logrado hacer esta:
Selec t1.Id, t1.Campo2, t2.IdTabla1
FORM Tabla1 t1 left join Tabla2 t2
ON t1.Id==t2.IdTabla1

var reultado=from t1 in Tabla1
join t2 in Tabla2
on t1.Id equals t2.IdTabla1 into leftJoin
from t2 in leftJoin.DefaultIfEmpty()
select new
{
Campo1=t1.Id,
Campo2=t1.Campo2,
Campo3=t2.IdTabla1
};

Pero como puedo pober el "OR"??

Gracias

Preguntas similares