Linq查询转换为List <string> </string>

时间:2011-02-14 23:04:02

标签: 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};

如何在没有循环foreach的情况下将查询转换为List?

{ ID = c.Element("val")}

当然是字符串

修改

我的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>

2 个答案:

答案 0 :(得分:13)

IDs = query.Select(a  => a.ID).ToList();

或者如果你想在一行中完成

List<string> IDs = (from c in doc.Root.Elements("a").Elements("b")
        select c.Element("val").Value).ToList()

答案 1 :(得分:4)

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

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();