我有一個SQL查詢:在轉換的SQL查詢LINQ C#
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/「尋找深度的節點」
你應該使用'> ='和'<='在LINQ聯接,因爲'BETWEEN'是包容 –
注意,但我會考慮你的表格結構 – LukeHennerley
爲什麼你需要知道前面的深度?難道你不能返回一個嵌套的結構,並讓繪製界面的代碼保持深度計數器? – MrFox