2010-05-20 7 views
9

Tengo dos tablasacceso a todos los datos después de la unión de dos tablas y agruparlos usando LINQ

TableA 
aId 
aValue 

TableB 
bId 
aId 
bValue 

me quiero unir estas dos tablas a través de aId, y desde allí, agruparlos por bValue

var result = 
from a in db.TableA 
join b in db.TableB on a.aId equals b.aId 
group b by b.bValue into x 
select new {x}; 

Mi código no reconoce la unión después del grupo. En otras palabras, la agrupación funciona, pero la combinación no (o al menos no puedo entender cómo acceder a todos los datos después de la unión).

Respuesta

21

La expresión entre group y by crea los elementos del grupo.

var result = 
from a in db.TableA 
join b in db.TableB on a.aId equals b.aId 
group new {A = a, B = b} by b.bValue; 

    // demonstration of navigating the result 
foreach(var g in result) 
{ 
    Console.WriteLine(g.Key); 
    foreach(var x in g) 
    { 
    Console.WriteLine(x.A.aId); 
    Console.WriteLine(x.B.bId); 
    } 
} 
+0

¡Funcionó como un hechizo maldito! ¡Muchas gracias! : D – sooprise

+0

Siempre me faltaba la parte 'nueva {A = a, B = b}' ... Funciona muy bien, ¡gracias! – z00l

0

Su objeto result será una IQueryable<IGrouping<T>>, por lo que tendría que tener acceso a una de las colecciones resultados, que será IGrouping<T>, y luego cavar en que colección para obtener los objetos x.

Cuestiones relacionadas