LINQ to XML группировка с суммой - PullRequest
1 голос
/ 31 января 2012

В настоящее время я работаю с этим xml (это небольшое подмножество):

<?xml version="1.0" encoding="UTF-8"?>
<orders>
    <order>
        <customer><![CDATA[1035]]></customer>
        <total><![CDATA[10]]></total>
    </order>
    <order>
        <customer><![CDATA[1036]]></customer>
        <total><![CDATA[5.6]]></total>
    </order>
    <order>
        <customer><![CDATA[1035]]></customer>
        <total><![CDATA[5.6]]></total>
    </order>
</orders>

Я пытаюсь выяснить, есть ли способ сгруппировать это по клиенту и подвести итог.

Когда я перебираю группы, у меня будет:

customer 1035 with a total of 15.6
customer 1036 with a total of 5.6

1 Ответ

2 голосов
/ 31 января 2012

Я бы сначала преобразовал, затем группа / сумма:

var query = from element in doc.Descendants("order")
            select new { Customer = (int) element.Element("customer"),
                         Total = (decimal) element.Element("total") }
            into order
            group order.Total by order.Customer into g
            select new { Customer = g.Key, Total = g.Sum() };

foreach (var result in query)
{
    Console.WriteLine("customer {0} with a total of {1}",
                      result.Customer, result.Total);
}

(Конечно, вы можете делать все это и в точечной записи.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...