C# Linq 到 xml。嵌套在父对象中的项目
C# Linq to xml. Items nested in parent object
我在使用 linq 查询然后将其序列化为 xml 时遇到问题,我希望有人能看到我哪里出错了。 Linq 对我来说还是有点陌生,所以任何帮助将不胜感激。
这是我的 linq 查询
var orders = (from o in db.orders
where o.id == id
select new Order
{
OrderID = o.order_reference,
DeliveryAddress = new DeliveryAddress()
{
AddressLine1 = o.customer.address.address_1
},
OrderItem = (from oi in db.order_items
where oi.order_id == o.id
select new OrderItem()
{
Item = oi.Item
}).ToList()
}
).ToList();
这是 xml 输出
<Order>
<OrderID>W0003579579</OrderID>
<DeliveryAddress>
<AddressLine1>Address</AddressLine1>
</DeliveryAddress>
<OrderItem>
<OrderItem>
<Item>T-Shirt</Item>
</OrderItem>
<OrderItem>
<Item>Jumper</Item>
</OrderItem>
</OrderItem>
</Order>
问题是,我不希望 OrderItem 像这样成为 OrderItem 的子项
<Order>
<OrderID>W0003579579</OrderID>
<DeliveryAddress>
<AddressLine1>Address Line 1</AddressLine1>
</DeliveryAddress>
<OrderItem>
<Item>T-Shirt</Item>
</OrderItem>
<OrderItem>
<Item>Jumper</Item>
</OrderItem>
</Order>
这是我的模型
public class Order
{
public string OrderID { get; set; }
public DeliveryAddress DeliveryAddress { get; set; }
public List<OrderItem> OrderItem { get; set; }
}
public class DeliveryAddress
{
public string AddressLine1 { get; set; }
}
public class OrderItem
{
public string Item { get; set; }
}
这是我的 xml 序列化器
private XDocument Serialize<T>(T source)
{
XDocument target = new XDocument();
XmlSerializer s = new XmlSerializer(typeof(T));
System.Xml.XmlWriter writer = target.CreateWriter();
s.Serialize(writer, source);
writer.Close();
return target;
}
尝试像这样注释您的 class:
public class Order
{
public string OrderID { get; set; }
public DeliveryAddress DeliveryAddress { get; set; }
[XmlElement("OrderItem")]
public List<OrderItem> OrderLine { get; set; }
}
我在使用 linq 查询然后将其序列化为 xml 时遇到问题,我希望有人能看到我哪里出错了。 Linq 对我来说还是有点陌生,所以任何帮助将不胜感激。
这是我的 linq 查询
var orders = (from o in db.orders
where o.id == id
select new Order
{
OrderID = o.order_reference,
DeliveryAddress = new DeliveryAddress()
{
AddressLine1 = o.customer.address.address_1
},
OrderItem = (from oi in db.order_items
where oi.order_id == o.id
select new OrderItem()
{
Item = oi.Item
}).ToList()
}
).ToList();
这是 xml 输出
<Order>
<OrderID>W0003579579</OrderID>
<DeliveryAddress>
<AddressLine1>Address</AddressLine1>
</DeliveryAddress>
<OrderItem>
<OrderItem>
<Item>T-Shirt</Item>
</OrderItem>
<OrderItem>
<Item>Jumper</Item>
</OrderItem>
</OrderItem>
</Order>
问题是,我不希望 OrderItem 像这样成为 OrderItem 的子项
<Order>
<OrderID>W0003579579</OrderID>
<DeliveryAddress>
<AddressLine1>Address Line 1</AddressLine1>
</DeliveryAddress>
<OrderItem>
<Item>T-Shirt</Item>
</OrderItem>
<OrderItem>
<Item>Jumper</Item>
</OrderItem>
</Order>
这是我的模型
public class Order
{
public string OrderID { get; set; }
public DeliveryAddress DeliveryAddress { get; set; }
public List<OrderItem> OrderItem { get; set; }
}
public class DeliveryAddress
{
public string AddressLine1 { get; set; }
}
public class OrderItem
{
public string Item { get; set; }
}
这是我的 xml 序列化器
private XDocument Serialize<T>(T source)
{
XDocument target = new XDocument();
XmlSerializer s = new XmlSerializer(typeof(T));
System.Xml.XmlWriter writer = target.CreateWriter();
s.Serialize(writer, source);
writer.Close();
return target;
}
尝试像这样注释您的 class:
public class Order
{
public string OrderID { get; set; }
public DeliveryAddress DeliveryAddress { get; set; }
[XmlElement("OrderItem")]
public List<OrderItem> OrderLine { get; set; }
}