我有以下 XML
<?xml version="1.0"?>
<NavResponse>
<Response>
<Products>
<Product>
<field name="Id" value="BST-U3009W"/>
<field name="Point" value="1"/>
</Product>
<Product>
<field name="Id" value="BST-U5047W"/>
<field name="Point" value="1"/>
</Product>
<Product>
<field name="Id" value="BST-U7023W"/>
<field name="Point" value="1"/>
</Product>
<Product>
<field name="Id" value="BST-U9007"/>
<field name="Point" value="1"/>
</Product>
<Product>
<field name="Id" value="BTS-U8010"/>
<field name="Point" value="1"/>
</Product>
</Products>
</Response>
<Id>00000000-0000-0000-0000-000000000000</Id>
<Errors/>
</NavResponse>
我正在尝试将其变成产品列表
产品在哪里
public class Product
{
public string Id {get;set;}
public int Point {get;set;}
}
我尝试以这种方式使用 Linq
XDocument fooXML = XDocument.Load(@"c:\fred\foo.xml");
然后这个
var pairs = XDocument.Parse(fooXML.ToString())
.Descendants("field")
.Select (xd => new {Key = xd.Attribute("name").Value,
Value = xd.Attribute("value").Value}).ToList();
但我得到了一个包含 10 条记录的列表。
Id BST-U3009W
Point 1
Id BST-U5047W
Point 1
Id BST-U7023W
Point 1
Id BST-U9007
Point 1
Id BTS-U8010
Point 1
当我想要这样的 5 条记录的列表时
Id = BST-U3009W , Point = 1
Id = BST-U5047W , Point = 1
Id = BST-U7023W, Point = 1
Id = BST-U9007, Point = 1
Id = BTS-U8010, Point = 1
我知道我可以通过使用 2 个循环并手动构建列表来作弊,但我更愿意学习如何正确地做到这一点。
谢谢