在连接两个表之后访问所有数据并使用linq对它们进行分组

时间:2010-05-20 19:06:20

标签: c# linq join linq-group

我有两张桌子

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 个答案:

答案 0 :(得分:22)

groupby之间的表达式会创建组元素。

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

答案 1 :(得分:0)

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