Ich habe eine LINQ-Abfrage, wo ich ein übergeordnetes Element auswählen, das eine where
und orderby
-Klausel hat, brauche ich nur das erste Ergebnis davon, so dass ich eine .Take(1)
darauf anwenden. Dann muss ich zwei separate Kinderknoten vom Eltern auswählen, die jeweils "wo" -Klauseln haben.LINQ Unterabfrage nach .Take (1)
Ich habe dies erfolgreich mit zwei verschiedenen LINQ-Abfragen, aber ich denke, es sollte nur eine Abfrage mit einer Unterabfrage in es, der Teil, der mich aufhängen ist die .Take(1)
auf dem Elternteil, die Unterabfrage kann danach nicht weiter Anruf ohne Fehler.
Hier ist was ich jetzt habe, ist es möglich, diese in einer Abfrage zu kombinieren?
var parent=
(from parentXML in myDal.GetMyXML().Elements("parentElements")
where DateTime.Parse((string)parentXML.Attribute("startDate")) <= currentDate
orderby DateTime.Parse((string)parentXML.Attribute("startDate")) descending
select parentXML).Take(1);
und:
var children =
(from firstChild in parent.Elements("childElements")
where (string)firstChild.Attribute("type") == "first"
from secondChild in parent.Elements("childElements")
where (string)secondChild.Attribute("type") == "second"
select new { first = firstChild , second = secondChild }).ToList();
welche Fehler bekommen Sie und können Sie eine XML-Beispiel posten? – rojobo