我有一个表,它存储一些信息和引用(列 parent_ID)到同一个表中的父行。
我需要获取包含子记录计数的所有记录列表(使用 Linq 扩展格式)。这是为我提供所需信息的 SQL 查询
Select a.ID, a.Name, Count(b.ID) from Table a
left join Table b on b.parent_ID=a.ID
group by a.ID, a.Name
例子
| ID | Name | parent_ID |
----------------------------------
| 1 | First | null |
| 2 | Child1 | 1 |
| 3 | Child2 | 1 |
| 4 | Child1.1 | 2 |
结果应该是:
| 1 | First | 2 |
| 2 | Child1 | 1 |
| 3 | Child2 | 0 |
| 4 | Child1.1 | 0 |
我试图至少让孩子数,但它不起作用......
var model = _db.Table
.GroupBy(r => new { r.parent_ID })
.Select(r => new {
r.Key.parent_ID,
ChildCount = r.GroupBy(g => g.parent_ID).Count()
});
这个查询不应该等同于这样的东西:
select parent_ID, count(parent_ID) from Table group by Table
但它为每一行返回count = 1 ...
如何使用 linq 扩展格式进行这样的查询?