首页 文章

如何在C#中运行linq而不是C#中的XElement

提问于
浏览
0

如何在 C# 中使用 linq 获取XmlElement的属性而不是XElement的属性?

public string test (XmlElement element)
{
     var enumAttr = from attr in element.Attributes select attr;

     foreach (var data in enumAttr)
      {
          // TO DO
      }
}

这是一个错误,

无法找到源类型“System.Xml.XmlAttributeCollection”的查询模式的实现 . 找不到“选择” . 考虑明确指定范围变量'attr'的类型

1 回答

  • 7

    这是因为 XmlAttributeCollection 只实现 IEnumerable 而不是 IEnumerable<T> . 您只需将查询表达式更改为:

    var enumAttr = from XmlAttribute attr in element.Attributes select attr;
    

    这相当于:

    var enumAttr = from attr in element.Attributes.Cast<XmlAttribute>() select attr;
    

    但是你无论如何都没有在LINQ做任何事情 - 你可以使用:

    foreach (XmlAttribute data in enumAttr.Attributes)
    

相关问题