在XElement.Elements(XName)方法的MSDN文档中,有以下示例:
XElement xmlTree = new XElement("Root",
new XElement("Type1", 1),
new XElement("Type1", 2),
new XElement("Type2", 3),
new XElement("Type2", 4),
new XElement("Type2", 5)
);
IEnumerable<XElement> elements =
from el in xmlTree.Elements("Type2")
select el;
foreach (XElement el in elements)
Console.WriteLine(el);
它和以下之间是否存在差异,产生相同的结果?
foreach (XElement el in xmlTree.Elements("Type2"))
Console.WriteLine(el);
在这里使用查询运算符是否有原因?
答案 0 :(得分:1)
在这种情况下,两者之间没有区别。我相信文档只是试图证明查询XML结构的能力。这种查询语法允许更详细和更具表现力的结果。
如果你担心看起来像多次枚举值的可能性你可以轻松休息,因为IEnumerable在被消耗时被评估(每个循环),所以在幕后不会发生任何额外的工作
答案 1 :(得分:0)
这篇文章实际上对Linq和Foreach之间的区别有一些很好的答案。最佳答案还包括一篇非常有用的博文:https://codereview.stackexchange.com/questions/14197/is-the-linq-version-faster-than-the-foreach-one