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

Posted

技术标签:

【中文标题】如何在 XxmlElement 而不是 C# 中的 XElement 上运行 linq【英文标题】:how to run linq on XxmlElement rather than XElement in C# 【发布时间】:2014-01-17 10:42:09 【问题描述】:

如何在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”的类型

【问题讨论】:

“它给出的错误”是永远足够的信息。请包含确切的错误消息。 找不到源类型“System.Xml.XmlAttributeCollection”的查询模式的实现。未找到“选择”。考虑明确指定范围变量“attr”的类型 请将其编辑到问题中,并在问下一个问题之前阅读tinyurl.com/so-list。提供所有相关信息很重要。 【参考方案1】:

这是因为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)

【讨论】:

以上是关于如何在 XxmlElement 而不是 C# 中的 XElement 上运行 linq的主要内容,如果未能解决你的问题,请参考以下文章

如何发送带有 HTML 标签的电子邮件,而不是 C# 中的 HTML 纯文本

如何忽略单元格输入中的制表键而不是制表符?数据网格视图 C#

如何将 Visual Studio 中的 C# 项目保存到单个 .cs 文件而不是整个项目文件夹中?

如何在 C# 中复制类对象 [重复]

将nAudio录音存储在变量而不是c#中的文件中

为啥c#中的main方法总是放在类中而不是c++中