C# 从XML枚举元素时使用vs而不使用LINQ查询运算符而不进行筛选
在XElement.Elements(XName)方法的MSDN文档中,有以下示例:C# 从XML枚举元素时使用vs而不使用LINQ查询运算符而不进行筛选,c#,xml,linq,C#,Xml,Linq,在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 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);
这里使用查询运算符有什么原因吗?在这种情况下,两者之间没有区别。我相信文档只是试图演示查询XML结构的能力。这种查询语法允许得到更详细、更具表现力的结果
如果您担心可能会出现多个值的枚举,您可以放心,因为IEnumerable在使用时进行计算(for each循环)因此,在幕后没有任何额外的工作发生。这篇文章实际上对Linq和Foreach之间的区别有一些很好的答案。最佳答案还包括一篇非常有用的博文:可能相关:
foreach (XElement el in xmlTree.Elements("Type2"))
Console.WriteLine(el);