Ho una query SQL:Conversione di una query SQL per 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;
Ho cercato di convertirlo in LINQ me stesso, ma io sono familiarità con la lingua, dopo alcune ricerche ho provato usando Linqer ma non converte le funzioni 'BETWEEN' o 'COUNT'.
Il più vicino che ho ottenuto finora è:
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;
che non funziona e non sarebbe tornato la 'profondità' anche se lo facesse, aiuto per favore!
Edit:
La query viene utilizzata per restituire la profondità di nodi in un insieme nidificato in un ordine in modo che possa creare una rappresentazione di una gerarchia; Sto seguendo questo tutorial: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ sul capitolo 'Trovare la profondità dei nodi'
si dovrebbe usare '> =' e '<=' nel LINQ join perché 'BETWEEN' è inclusiva –
Nota a margine, ma vorrei prendere in considerazione la struttura della tabella – LukeHennerley
Perché dovresti conoscere la profondità in anticipo? Non puoi restituire una struttura nidificata e lasciare che il codice che disegna l'interfaccia mantenga un contatore di profondità? – MrFox