Linq se une y agrupa
Frecuentes
Visto 97 veces
0
Siguiendo con mi pregunta anterior: Unión interna simple en linq
¿Cómo escribiría un linq para hacer exactamente lo mismo que el siguiente?
SELECT A.name, B.name
FROM A
INNER JOIN B ON A.id = B.AID
INNER JOIN C ON B.id = C.BID
GROUP BY A.Name, B.Name
ORDER BY A.Name
Probé esto, pero genera selecciones anidadas y, por lo tanto, produce una cantidad diferente de filas.
var r = from a in db.A
join b in db.B on a.Id equals b.AId
join c in db.C on b.Id equals c.BId
group c by c.B into g1
group b by g1.Key.A into g2
select g2.Key;
necesito un grupo de A
's que contiene una lista de B
's que contiene una lista de C
's
1 Respuestas
0
Bah mi comentario perdió su formato
puede usar un enlace let en una instrucción linq para mantener un valor.
from a in db.a
let g1 = a.GroupBy(x => x.Id)
from item in g1
let g2 = item.GroupdBy(x => x.Id)
from item2 in g2
select new {A = a, B = item, C = item2}
o algo así, espero que te dé suficiente para resolverlo
Respondido el 12 de junio de 12 a las 14:06
Gracias, encontré una solución. - Jon
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas linq join linq-group or haz tu propia pregunta.
puede usar un enlace let en una instrucción linq para mantener un valor. from a in db.a let g1 = a.GroupBy(x => x.Id) from item in g1 let g2 = item.GroupdBy(x => x.Id) from item2 in g2 select new {A = a, B = elemento, C = elemento2} o algo así, espero que te dé suficiente para resolverlo: Dylan