C# Linq 到 xml。嵌套在父对象中的项目

标签 c# xml linq list nested

我在 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;
    }

最佳答案

尝试像这样注释你的类:

public class Order
{
    public string OrderID { get; set; }
    public DeliveryAddress DeliveryAddress { get; set; }

    [XmlElement("OrderItem")]
    public List<OrderItem> OrderLine { get; set; }
}

关于C# Linq 到 xml。嵌套在父对象中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460123/

相关文章:

c# - 从线程单线程单元线程中获取资源/内存

linq - 我如何 LINQify 这个?

java - Android XML内部存储

xml - ACAGetTransmitterBulkRequestStatus。 TPE1122 : “WS Security Header in the message is invalid.”

java - android saxparser 截断xml标签内容

c# - ForEach 在运行时给出无效的转换

c# - Linq Contains() 是否检查 HashSet?

c# - ASP.NET Core MVC 动态返回不是驼峰式

c# - (Func<IInterface>) 和 (Func<Task<IInterface>>) 之间的调用不明确

c# - 需要 C# 正则表达式来匹配四位数字序列,但忽略后面的任何单个数字