如果我构建一个查询说:
(使用System.Xml.Linq中的XDocument类构建查询)
var elements = from e in calendarDocument.Root.Elements("elementName") select e;
Run Code Online (Sandbox Code Playgroud)
然后我调用elements.Last()几次.每次调用都会返回最新的Last()元素吗?
例如,如果我这样做
elements.Last().AddAfterSelf(new XElement("elementName", "someValue1"));
elements.Last().AddAfterSelf(new XElement("elementName", "someValue2"));
elements.Last().AddAfterSelf(new XElement("elementName", "someValue3"));
elements.Last().AddAfterSelf(new XElement("elementName", "someValue4"));
Run Code Online (Sandbox Code Playgroud)
它实际上是每次都获取最新的元素并添加一个新元素或者是elements.Last()每次都是相同的元素吗?
And*_*bel 11
是的,linq查询是惰性评估的.直到你打电话Last()给查询才会执行.在这种情况下,它将每次获得最新的最后一个元素.
我认为这实际上是我第一次看到正确使用调用Last()(或执行查询的任何其他运算符)几次.当人们这样做时,通常会错误地导致糟糕的表现.
我认为linq-to-xml库非常智能,可以为您的查询提供良好的性能,但是如果不尝试我就不会相信它.