Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xml Linq上创建子项_C#_Sql Server 2008_Linq To Xml_Asp.net 3.5 - Fatal编程技术网

C# 如何在Xml Linq上创建子项

C# 如何在Xml Linq上创建子项,c#,sql-server-2008,linq-to-xml,asp.net-3.5,C#,Sql Server 2008,Linq To Xml,Asp.net 3.5,在northwind数据库中。我使用订单和订单详细信息表。我想创建一个xml文件,其中订单显示在xml上的项目标签上,以及订单详细信息显示在子项目上。假设订单ID=1显示在项目标签上,然后订单详细信息订单ID=1的表格信息 显示在子项上 XElement xml = new XElement("MyMenu", from c in db.Orders //where (c.ParentID == 0)

在northwind数据库中。我使用订单和订单详细信息表。我想创建一个xml文件,其中订单显示在xml上的项目标签上,以及订单详细信息显示在子项目上。假设订单ID=1显示在项目标签上,然后订单详细信息订单ID=1的表格信息 显示在子项上

 XElement xml = new XElement("MyMenu",
                      from c in db.Orders
                      //where (c.ParentID == 0)
                      orderby c.OrderID
                      select new XElement("Item",
                                c.OrderID == null ? null : new XAttribute("OrderID", c.OrderID),
                                 c.ShipName == null ? null : new XAttribute("ShipName", c.ShipName),
                                  c.OrderDate == null ? null : new XAttribute("OrderDate", c.OrderDate)


                                )
                      );

            xml.Save(@"C:\contacts.xml");
我需要在上面的语法中添加什么。显示语法。提前感谢。我使用C#。上面的语法显示以下输出:

<?xml version="1.0" encoding="utf-8"?>
<MyMenu>
  <Item OrderID="10248" ShipName="Vins et alcools Chevalier" OrderDate="1996-07-04T00:00:00" />
  <Item OrderID="10249" ShipName="Toms Spezialitäten" OrderDate="1996-07-05T00:00:00" />
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00" />
</MyMenu>
以上语法创建以下输出:

 XElement xml = new XElement("MyMenu",
                      //from c in db.Orders
                       from c in db.Orders
                       join od in db.Order_Details on c.OrderID equals od.OrderID
                      //where (c.ParentID == 0)
                      orderby c.OrderID
                      select new XElement("Item",
                                c.OrderID == null ? null : new XAttribute("OrderID", c.OrderID),
                                 c.ShipName == null ? null : new XAttribute("ShipName", c.ShipName),
                                  c.OrderDate == null ? null : new XAttribute("OrderDate", c.OrderDate),
                          new XElement("SubItem",
                               od.OrderID == null ? null : new XAttribute("OrderID", od.OrderID),
                               od.ProductID == null ? null : new XAttribute("ProductID", od.ProductID),
                               od.Quantity == null ? null : new XAttribute("Quantity", od.Quantity)
                               )


                                )
                      );
<?xml version="1.0" encoding="utf-8"?>
<MyMenu>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="41" Quantity="10" />
  </Item>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="51" Quantity="35" />
  </Item>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="65" Quantity="15" />
  </Item>
</MyMenu>

如何将OrderID=“10250”所有子项放在一个项目标签下?

<?xml version="1.0" encoding="utf-8"?>
<MyMenu>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="41" Quantity="10" />
  </Item>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="51" Quantity="35" />
  </Item>
  <Item OrderID="10250" ShipName="Hanari Carnes" OrderDate="1996-07-08T00:00:00">
    <SubItem OrderID="10250" ProductID="65" Quantity="15" />
  </Item>
</MyMenu>
XElement xml = new XElement("MyMenu",
    //from c in db.Orders
    from c in db.Orders
    orderby c.OrderID
    select new XElement("Item",
        c.OrderID == null ? null : new XAttribute("OrderID", c.OrderID),
        c.ShipName == null ? null : new XAttribute("ShipName", c.ShipName),
        c.OrderDate == null ? null : new XAttribute("OrderDate", c.OrderDate),
        from od in db.Order_Details
        where od.OrderID == c.OrderID
        select new XElement("SubItem", 
            od.OrderID == null ? null : new XAttribute("OrderID", od.OrderID),
            od.ProductID == null ? null : new XAttribute("ProductID", od.ProductID),
            od.Quantity == null ? null : new XAttribute("Quantity", od.Quantity)
        )
    ));