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