C# 从XML枚举元素时使用vs而不使用LINQ查询运算符而不进行筛选

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.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);

这里使用查询运算符有什么原因吗?

在这种情况下,两者之间没有区别。我相信文档只是试图演示查询XML结构的能力。这种查询语法允许得到更详细、更具表现力的结果


如果您担心可能会出现多个值的枚举,您可以放心,因为IEnumerable在使用时进行计算(for each循环)因此,在幕后没有任何额外的工作发生。

这篇文章实际上对Linq和Foreach之间的区别有一些很好的答案。最佳答案还包括一篇非常有用的博文:

可能相关:
foreach (XElement el in xmlTree.Elements("Type2"))
    Console.WriteLine(el);