2010-08-06 60 views
0

創建子項在Northwind數據庫。我使用訂單和訂單明細 table.I想創建一個XML文件,其中爲了展示在項目標籤XML和ORDERDETAILS秀上子item。假設orderid = 1顯示在商品標籤上,然後orderdetais表信息OrderID = 1 顯示子商品。如何基於XML的LINQ

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"); 

我應該需要什麼在我的上面加syntax.Show我在C#語法。以上工作advance.I顯示syntax.Thanks波紋管輸出:

<?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> 

我想吼叫出來把

<MyMenu> 
     <Item OrderID="10248" ShipName="Vins et alcools Chevalier" OrderDate="1996-07-04T00:00:00" > 
     <SubItem> 
     .......... 
     ..........Contain detailTable Information for OrderID="10248" 
     ........... 
    </SubItem> 
</Item>  
    </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> 

如何把訂單ID = 「10250」 的所有子項目一個項目標籤下?

回答

0
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) 
     ) 
    ));