Linq to XML - десериализация в объект - PullRequest
1 голос
/ 04 декабря 2011

Мне удалось заставить Linq to XML работать, но я хотел посмотреть, есть ли более эффективный способ применения элементов к объекту, чем использование оператора foreach после прохождения xml?Я знаю, что вы можете использовать выражения lamba, но не знаете, как применить это к этому или возможно ли это?

Любые предложения очень приветствуются.

List<Order> myOrders = new List<Order>();

var orders = from order in xdoc.Descendants("Order")
             select new{
                  OrderNumber = order.Element("OrderNumber").Value,
                  OrderDate = order.Element("OrderDate").Value,
                  OrderTotal = order.Element("OrderTotal").Value
             };

foreach(var ord in orders)
{
   myOrders.OrderNumber = ord.OrderNumber;
   myOrders.OrderDate = ord.OrderDate;
   myOrders.OrderTotal = ord.OrderTotal;
}

Ответы [ 3 ]

4 голосов
/ 04 декабря 2011

Просто выберите Order экземпляров:

var orders = from order in xdoc.Descendants("Order")
             select new Order {
                  OrderNumber = order.Element("OrderNumber").Value,
                  OrderDate = order.Element("OrderDate").Value,
                  OrderTotal = order.Element("OrderTotal").Value
             };

orders будет иметь тип IEnumerable<Order>, но если вам нужен список:

List<Order> myOrders = orders.ToList();
1 голос
/ 04 декабря 2011

используйте следующее как замену кода, который вы разместили

List<Order> myOrders = (from order in xdoc.Descendants("Order")
                        select new Order {
                        OrderNumber = order.Element("OrderNumber").Value,
                        OrderDate = order.Element("OrderDate").Value,
                        OrderTotal = order.Element("OrderTotal").Value
                        }).ToList();
0 голосов
/ 04 декабря 2011
List<Order> myOrders = new List<Order>();

var orders = xdoc.Descendants("Order").Select(x=> new Order{ 
    OrderNumber = x.Element("OrderNumber").Value,
    OrderDate = x.Element("OrderDate").Value,
    OrderTotal = x.Element("OrderTotal").Value
    });

myOrders.AddRange(orders) // or just orders.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...