LINQ to XML, cz. 3 - Zapytania - kontynuacja
Linq to Xml dopuszcza stosowanie zmiennych w zapytaniach. Załóżmy, że chcemy wybrać z naszego przykładowego dokumentu wszystkie elementy <wylot> i <przylot>, których data jest taka sama jak data ostatniego elementu <przylot>. Przykładowe zapytanie może wyglądać tak:
var elements =
from el in xDoc.Elements("wycieczka").Elements("segment").Elements()
let dataPrzylotu =
(DateTime)xDoc.Descendants("przylot").Last().Attribute("data")
where ((DateTime)el.Attribute("data")).ToShortDateString() ==
dataPrzylotu.ToShortDateString()
select el;
W zapytaniu, data przylotu ostatniego segmentu jest zapisywana w zmiennej dataPrzylotu. Zmienna ta jest później używana w klauzuli where do porównania daty aktualnie przetwarzanego elementu. Linq daje też programiście możliwość tworzenia podzapytań (ang. subqueries). Oto przykładowe zapytanie zawierające podzapytanie:
var elements = from segmenty in xDoc.Descendants("segment")
from przyloty in segmenty.Elements("przylot")
select przyloty;Mniej złożone dokumenty nie wymagają zazwyczaj stosowania podzapytań (tak też jest w przypadku naszego przykładowego dokumentu - dlatego powyższy przykład zapytania jest troche "naciągany").

