我有一个相当复杂的连接查询,我使用我的数据库。在运行它时,我最终得到的结果包含一个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的子集。我想计算下面每节课的订单数量。
答案 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,因此不需要明确的加入吗?