Linq2XML创建对象模型
本文关键字:对象模型 创建 Linq2XML | 更新日期: 2023-09-27 17:59:47
如果我有以下xml;
<productList>
<product>
<id>1</id>
<name>prod 1</name>
</product>
<product>
<id>2</id>
<name>prod 2</name>
</product>
<product>
<id>3</id>
<name>prod 3</name>
</product>
</productList>
如何使用Linq2XML创建对象高度?
我已经试过了;
var products = from xProducts in xDocument.Descendants("root").Elements("productList")
select new
{
product = from xProduct in xProducts.Elements("product")
select new
{
id = xProduct.Element("id").Value,
name = xProduct.Element("name").Value
}
}
然而,这会产生一个错误,因为我认为product
被声明了不止一次。
我想得到一个这样的物体;
ProductList
List<product>
id
name
我不能有一个模型,这些将进入,所以我需要使用变种
编辑
如果我只得到名字或id,那么代码就可以工作了。只有当我尝试同时获取两个字段时,它才会失败。
关于您的错误,您正在使用Silverlight吗?这不支持匿名类型。无论如何,比起查询语法,Linq-to-XML使用流畅的语法效果更好。定义合适的ProductList和Product类时,以下内容应该有效:
class ProductList : List<Product>
{
public ProductList(items IEnumerable<Product>)
: base (items)
{
}
}
class Product
{
public string ID { get; set;}
public string Name{ get; set;}
}
var products = xDocument.Desendants("product");
var productList = new ProductList(products.Select(s => new Product()
{
ID = s.Element("id").Value,
Name= s.Element("name").Value
});