C# Linq查询转换为列表<;字符串>;

C# Linq查询转换为列表<;字符串>;,c#,asp.net,linq-to-xml,type-conversion,C#,Asp.net,Linq To Xml,Type Conversion,我有这个密码 List<string> IDs = new List<string>(); XDocument doc = XDocument.Parse(xmlFile); var query = from c in doc.Root.Elements("a").Elements("b") select new { ID = c.Element("val").Value}; 当然是字符串 编辑 我的XML文件 <?xml vers

我有这个密码

List<string> IDs = new List<string>();
    XDocument doc = XDocument.Parse(xmlFile);
    var query = from c in doc.Root.Elements("a").Elements("b")
        select new { ID = c.Element("val").Value};
当然是字符串

编辑

我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<aBase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <a>
    <b>
      <val>other data</val>
    </b>
    <b>

      <val>other data</val>
    </b>
  </a>
</aBase>

其他数据
其他数据
或者如果你想用一行的话

List<string> IDs = (from c in doc.Root.Elements("a").Elements("b")
        select c.Element("val").Value).ToList()
List id=(来自doc.Root.Elements(“a”).Elements(“b”)中的c)
选择c.Element(“val”).Value).ToList()

匿名类型并没有真正帮助您,因为您只需要字符串序列,而不需要任何元组。尝试:

XDocument doc = XDocument.Parse(xmlFile);
var query = from c in doc.Root.Elements("a").Elements("b")
            select c.Element("val").Value;

var IDs = query.ToList();
就我个人而言,我会一直使用方法语法:

var IDs = doc.Root.Elements("a")
                  .Elements("b")
                  .Select(c => c.Element("val").Value)
                  .ToList();

它抛出了[System.NullReferenceException]。为什么?@Saint_pl我只是使用了您提供的xml,没有发现异常。但我猜你的一个b没有val。好吧,它工作得很好。在真实的项目中,我有其他的名字,我做了错字(没有智能感知;))Thanx
XDocument doc = XDocument.Parse(xmlFile);
var query = from c in doc.Root.Elements("a").Elements("b")
            select c.Element("val").Value;

var IDs = query.ToList();
var IDs = doc.Root.Elements("a")
                  .Elements("b")
                  .Select(c => c.Element("val").Value)
                  .ToList();