VS 2012 LINQ to XML XmlDocument.Descendants导致“尝试显式指定类型参数”

时间:2012-11-12 14:46:51

标签: xml linq

我正在针对XmlDocument进行简单的LINQ查询,并且我得到“尝试明确指定类型参数”错误。这是我的C#代码:

var Document = new XmlDocument();
Document.LoadXml(XmlFilePath);
var selectedMessage = from msg in Document.Descendants("Messages").Descendants("Message")
                      where msg.Attribute("Code").Value == constant
                      select msg;

xml如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<MessageService>
   <Messages>
     <Message Code="DE-01003" Section="Delphi Backend" Line="N/A" Claim="No" Constant="E_PHY_LN_INV_HCPCS" Description="Error reading HCPCS code on line %d (%s)" />
     <Message Code="DE-01004" Section="Delphi Backend" Line="N/A" Claim="No" Constant="E_PHY_LN_RBRVS_FAMILY_INV_DT" Description="RunFamilyReduction: Invalid Date on claim line %d (%s)" />
     <Message Code="DE-02002" Section="Delphi Backend" Line="N/A" Claim="No" Constant="E_AMB_LN_INV_HCPCS" Description="Invalid or missing HCPCS code on claim line %d (%s)" />
     .
     .
     .
   </Messages>
</MessageService>

第一次调用.Descendants会导致错误。我不确定我做错了什么。

任何帮助都将不胜感激。

谢谢!

苏珊

1 个答案:

答案 0 :(得分:1)

您正在使用XmlDocument,但尝试使用Descendants方法...而我期待您正在考虑XDocument.Descendants

希望使用XmlDocument而不是LINQ to XML是否有任何理由?混合和匹配并不理想......

只需将前几行更改为:

// Variable name casing changed to be more idiomatic
var document = XDocument.Load(xmlFilePath);