0

我有以下代码试图初始化我正在实例化的List<OrderItem>字段。Order我的问题是 Visual Studio 不喜欢最里面的 LINQ 查询;具体来说,它在抱怨fromi.Element("OrderItems")select

以这种方式初始化一个对象是不可能的,还是我做错了什么?谢谢,康纳。

var orderXml = XDocument.Load("FileTest\\orders.xml");

orderXml.Descendants("Order").Do(i => orderList.Add(new Order()
{
    Customer = new Customer()
    {
        ID = new Guid(i.Element("Customer").Element("ID").Value)
    },

    OrderItems = new List<OrderItem>()
    {
        from current in i.Element("OrderItems")
        select new OrderItem() {
            Product = new Product()
            {
                ID = new Guid(current.Element("ID").Value),
                UnitPrice = current.Element("UnitPrice").Value.To<decimal>()
            },
            Quantity = current.Element("Quantity").Value.To<int>(),
            TotalPrice = current.Element("TotalPrice").Value.To<decimal>()
        }
    }
}));
4

1 回答 1

3

使用对象初始化器为IEnumerable<T>列表中的每个项目调用添加。但是,您不能IEnumerable<T>直接提供。

http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx

考虑改用构造函数。

 OrderItems = new List<OrderItem>(
    from current in i.Element("OrderItems")
    select new OrderItem() {
        Product = new Product()
        {
            ID = new Guid(current.Element("ID").Value),
            UnitPrice = current.Element("UnitPrice").Value.To<decimal>()
        },
        Quantity = current.Element("Quantity").Value.To<int>(),
        TotalPrice = current.Element("TotalPrice").Value.To<decimal>()
    }
 )
于 2013-10-04T10:35:51.417 回答