Получите доступ ко всем данным после объединения двух таблиц и сгруппируйте их, используя linq - PullRequest
10 голосов
/ 20 мая 2010

У меня есть две таблицы

TableA
aId
aValue

TableB
bId
aId
bValue

Я хочу объединить эти две таблицы через aId, а оттуда сгруппировать их по 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};

Мой код не распознает объединение после группы. Другими словами, группировка работает, но объединение не работает (или, по крайней мере, я не могу понять, как получить доступ ко всем данным после объединения).

Ответы [ 2 ]

22 голосов
/ 20 мая 2010

Выражение между group и by создает элементы группы.

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 голосов
/ 20 мая 2010

Ваш result объект будет IQueryable<IGrouping<T>>, поэтому вам нужно будет получить доступ к одному из наборов результатов, который будет IGrouping<T>, а затем копаться в этой коллекции, чтобы получить x объектов.

...