10

我有两张桌子

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};

我的代码无法识别组后的加入。换句话说,分组有效,但联接不起作用(或者至少我不知道如何在联接后访问所有数据)。

4

2 回答 2

22

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);
  }
}
于 2010-05-20T19:12:35.127 回答
0

您的result对象将是IQueryable<IGrouping<T>>,因此您必须访问结果集合之一,即IGrouping<T>,然后深入集合以获取x对象。

于 2010-05-20T19:20:10.757 回答