计算Linq查询

时间:2010-08-26 13:23:51

标签: c# linq

我有一个相当复杂的连接查询,我使用我的数据库。在运行它时,我最终得到的结果包含一个baseID和一堆其他字段。然后我想获取这个baseID并确定它在这样的表中出现的次数:

TableToBeCounted (One to Many)
{
     baseID,
     childID
}

如何执行仍使用我已有查询的linq查询,然后将count()与baseID连接?

未经测试的linq代码中的类似内容:

from k in db.Kingdom
join p in db.Phylum on k.KingdomID equals p.KingdomID
where p.PhylumID == "Something"
join c in db.Class on p.PhylumID equals c.PhylumID
select new {c.ClassID, c.Name};

然后,我想要获取该代码并计算每个类中嵌套的订单数量。然后我想使用linq追加一列,这样我的最终选择看起来像这样:

select new {c.ClassID, c.Name, o.Count()}//Or something like that.

整个例子都是基于生物分类系统。

假设我有多个表的示例:

Kingdom
|--Phylum
    |--Class
       |--Order

每个Phylum都有一个Phylum ID和一个王国ID。意味着所有的门都是一个王国的子集。所有订单都是类ID的子集。我想计算下面每节课的订单数量。

2 个答案:

答案 0 :(得分:0)

select new {c.ClassID, c.Name, (from o in orders where o.classId == c.ClassId select o).Count()}

这可能适合你吗?我最好不知道更多的拱门。

答案 1 :(得分:0)

如果关系如您所述:

  var foo = db.Class.Where(c=>c.Phylum.PhylumID == "something")
                    .Select(x=> new { ClassID = x.ClassID, 
                                      ClassName = x.Name, 
                                      NumOrders= x.Order.Count})
                    .ToList();

附带问题:你为什么加入这些实体?它们不应该自然是FK,因此不需要明确的加入吗?