【问题标题】:LINQ and XML...need help debugging thisLINQ 和 XML ......需要帮助调试这个
【发布时间】:2009-12-09 05:37:41
【问题描述】:

所以我的天才前辈决定在数据库中为应用程序包含一个“xml_data”列。我现在必须将此 xml 中存储的一些信息用于另一个应用程序。我正在做一个正常的查询以从数据库中获取 xml,并尝试使用 LINQ 从 XML 中提取我需要的数据。下面是一些 XML 示例:

<?xml version="1.0"?>
<data>
  <field>
    <name normalized="id_num"></name>
    <value>
      <![CDATA[12345]]>
    </value>
  </field>
  <field>
    <name normalized="blah"></name>
    <value>
      <![CDATA[asdfasdf]]>
    </value>
  </field>
 ...
</data>

由于每一行都有它自己的遵循这种模式的 XML 文档,我正在遍历 SQL 结果并尝试从 XML 中提取我需要的值,如下所示:

List<String> collection = new List<String>();
while (sqlreader.Read())
{
    XElement response = XElement.Parse(sqlreader["xml_data"].ToString());
    var name = from field in response.Elements("field")
               where (string)field.Element("name").Attribute("normalized") == "id_num"
               select field.Element("value").Value;
    collection.Add(name.ToString());
}

我知道这是不对的,因为我一直在取回它而不是我需要的值:

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String]

附:请温柔,我是一名 Python 程序员,对 C# 或 .NET 不太熟悉。

【问题讨论】:

    标签: asp.net xml linq


    【解决方案1】:

    您需要 name.FirstOrDefault() 或 name.First() 而不是 name.ToString()。如果没有找到名为 'id_num' 的字段,前者会给你 null,后者会抛出异常。

    您的 LINQ 查询返回一个集合(尽管在您的情况下,假设数据正常,它将是一个单项集合)。

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多