同じテーブルの親行への情報と参照(列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拡張形式を使用してこのようなクエリを作成するにはどうすればよいですか?