2012-09-06 15 views
5

que tienen una estructura de datos que bajo¿Cómo agregar más atributos en XElement?

class BasketCondition 
{ 
     public List<Sku> SkuList { get; set; } 
     public string InnerBoolean { get; set; } 
} 

class Sku 
{ 
     public string SkuName { get; set; } 
     public int Quantity { get; set; } 
     public int PurchaseType { get; set; } 
} 

Ahora vamos a poblamos algún valor a la misma

var skuList = new List<Sku>(); 
skuList.Add(new Sku { SkuName = "TSBECE-AA", Quantity = 2, PurchaseType = 3 }); 
skuList.Add(new Sku { SkuName = "TSEECE-AA", Quantity = 5, PurchaseType = 3 }); 

BasketCondition bc = new BasketCondition(); 
bc.InnerBoolean = "OR"; 
bc.SkuList = skuList; 

La salida deseo es

<BasketCondition> 
    <InnerBoolean Type="OR"> 
     <SKUs Sku="TSBECE-AA" Quantity="2" PurchaseType="3"/> 
     <SKUs Sku="TSEECE-AA" Quantity="5" PurchaseType="3"/> 
    </InnerBoolean> 
</BasketCondition> 

Mi programa hasta ahora es

XDocument doc = 
     new XDocument(
     new XElement("BasketCondition", 

     new XElement("InnerBoolean", new XAttribute("Type", bc.InnerBoolean), 
     bc.SkuList.Select(x => new XElement("SKUs", new XAttribute("Sku", x.SkuName))) 
     ))); 

Lo que me da la salida como

<BasketCondition> 
    <InnerBoolean Type="OR"> 
    <SKUs Sku="TSBECE-AA" /> 
    <SKUs Sku="TSEECE-AA" /> 
    </InnerBoolean> 
</BasketCondition> 

¿Cómo puedo añadir el resto de los atributos Cantidad y PurchaseType a mi programa.

Por favor, ayuda

Respuesta

8

lo encontré

bc.SkuList.Select(x => new XElement("SKUs", new XAttribute("Sku", x.SkuName), 
              new XAttribute("Quantity", x.Quantity), 
              new XAttribute("PurchaseType", x.PurchaseType) 
            )) 
4

Usted simplemente puede hacer esto:

yourXElement.Add(new XAttribute("Quantity", "2")); 
yourXElement.Add(new XAttribute("PurchaseType", "3"));