Ich habe eine SQL-Abfrage:eine SQL-Abfrage in LINQ zu C# Konvertieren
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;
Ich habe versucht Umwandlung, es selbst LINQ, aber ich bin mit der Sprache vertraut, nach einigen Recherchen habe ich versucht, mit Linqer, aber es wird nicht die Funktionen 'BETWEEN' oder 'COUNT' konvertieren.
Die nächstgelegene ich bisher bekommen habe ist:
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;
, die nicht funktioniert und würde die ‚Tiefe‘ nicht zurück, auch wenn es so wäre, bitte helfen!
Edit:
die Abfrage verwendet wird, um die Tiefe von Knoten in einem verschachtelten Satz in einer Reihenfolge zurückzubringen, so dass ich eine Darstellung einer Hierarchie zu schaffen; Ich verfolge dieses Tutorial: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ auf dem Kapitel ‚Das Finden der Tiefe der Knoten‘
sollten Sie '> =' und '<=' in der Linq join weil 'BETWEEN' inklusive ist –
Seitliche Notiz, aber ich würde Ihre Tabellenstruktur betrachten – LukeHennerley
Warum sollten Sie die Tiefe im Voraus wissen? Kannst du nicht eine verschachtelte Struktur zurückgeben und den Code, der die Schnittstelle zeichnet, einen Tiefenzähler behalten? – MrFox