私はSQLクエリを持っています:
SELECT
node.GroupName
, depth = COUNT(parent.GroupName) - 1
FROM CompanyGroup node
JOIN CompanyGroup parent ON node.LeftID BETWEEN parent.LeftID AND parent.RightID
GROUP BY node.GroupName, node.LeftID
ORDER BY node.LeftID;
私はそれを自分でLINQに変換しようとしましたが、言語に慣れていません。いくつかの調査の後、Linqerを使用してみましたが、関数「BETWEEN」または「COUNT」を変換しません。
私がこれまでに得た最も近いものは次のとおりです。
var groupModel =
from node in db.CompanyGroups
join parent in db.CompanyGroups.Where(node.LeftID > parent.LeftID && node.LeftID < parent.RightID)
orderby node.LeftID
select node.GroupName;
これは機能せず、「深さ」が返されたとしても返されません。助けてください!
編集:
クエリは、階層の表現を作成できるように、ネストされたセット内のノードの深さを順番に返すために使用されます。私はこのチュートリアルに従っています: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/の章の「ノードの深さを見つける」