XML 要在 c# 中列出的数据

XML data to list in c#

我的xml数据:

<products>
  <group groupcontractno="106" groupcontractversion="40">
      <product groupcontractno="106" groupcontractversion="40" cobno="1" productno="100" cobproductversion="4">
        <productname>Båtförsäkring</productname>
      </product>
      <product groupcontractno="106" groupcontractversion="40" cobno="1" productno="112" cobproductversion="1">
        <productname>Vattenskoterförsäkring</productname>
      </product>
  </group>
  <group>
   ...
  </grpup>
</products>

型号class:

public class GroupContract
{
    public string groupcontractno { get; set; }        
    public IList<Products> products { get; set; }

}

public class Products
{
    public string productname { get; set; }
}

我想用 group 创建列表,然后在每个 group 列表中都有一个 products 列表。 这就是我尝试过的:

List<Products> productList = new List<Products>();
List<GroupContract> groupcontractList = groupedData.Descendants("group")
                                    .Select(d => new GroupContract
                                    {
                                        groupcontractname = d.Attribute("groupcontractno").Value,
                                        products = productList.Select(e => new Products
                                        {
                                            productname = d.Descendants("product").Descendants("productname").First().Value
                                        }).ToList()
                                    }).ToList();

它确实创建了 group 个列表,但在 products 个列表中是空的,任何人都可以更正我的代码,将不胜感激!

这是您要查询的内容:

List<GroupContract> groupcontractList = groupedData.Descendants("group")
                                .Select(d => new GroupContract
                                {
                                    groupcontractno = d.Attribute("groupcontractno").Value,
                                    products = d.Elements("product").Select(e => new Products
                                    {
                                        productname = d.Descendants("product").Descendants("productname").First().Value
                                    }).ToList()
                                }).ToList();

主要,变化:

products = productList.Select(...

products = d.Elements("product").Select(...

而不是 productList.Select,使用您的组 d 并将所有 product 子元素放入列表中。然后你可以折腾你的productList变量。