作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有这样一个 xml:
<countries>
<country ID="MX">
<idea ID="Valor1">nota1</idea>
<idea ID="Valor2">nota2</idea>
<idea ID="Valor3">nota3</idea>
<idea ID="Valor4">nota4</idea>
</country>
<country ID="US">
<idea ID="Valor1">nota1</idea>
<idea ID="Valor2">nota2</idea>
<idea ID="Valor3">nota3</idea>
<idea ID="Valor4">nota4</idea>
</country>
</countries>
如何使用 LINQ to XML 获取特定类型的列表?我试过这样的事情:
我创建了一个类:
public class Ideas
{
public string Country { get; set; }
public List<ListItem> ListIdeas { get; set; }
}
然后我用这个类做一个列表:
XDocument xdoc = XDocument.Load(this.Server.MapPath("~/config/ideas.xml"));
var cat = from p in xdoc.Descendants("countries")
.Elements("country")
.Select(m => new Ideas
{
Country = m.Attribute("ID").Value,
ListIdeas = m.Elements("idea")
.Select(c =>
new ListItem
{
Text = c.Attribute("ID").Value ,
Value = c.Value
}).ToList()
});
但是我得到下一个错误:
A query body must end with a select clause or a group clause
The type of the expression in the select clause is incorrect. Type inference failed in the call to 'Select'.
最佳答案
您混合了查询语法和扩展方法语法。选择一个。
var r = (from c in xdoc.Element("countries")
.Elements("country")
select new Country
{
ID = c.Attribute("ID").Value,
Ideas = (from i in c.Elements("idea")
select new Idea
{
Text = i.Attribute("ID").Value,
Value = i.Value
}).ToList()
}).ToList();
请注意,为了更好的可读性,我重命名了您的类和属性。
在另一种语法中相同:
var q = xdoc.Element("countries")
.Elements("country")
.Select(c => new Country
{
ID = c.Attribute("ID").Value,
Ideas = c.Elements("idea")
.Select(i => new Idea
{
Text = i.Attribute("ID").Value,
Value = i.Value
})
.ToList()
})
.ToList();
关于c# - 错误 : A query body must end with a select clause or a group clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14487410/
我是一名优秀的程序员,十分优秀!