У меня есть два XML-файла.
Первая компания.xml:
<company active="1">
<name>name1</name>
<location>first floor</location>
<room>25</room>
<category>power,gas,water</category>
</company>
<company active="1">
<name>name2</name>
<location>second floor</location>
<room>23</room>
<category>water,gas</category>
</company>
Second bills.xml:
<bill>
<name>bill1</name>
<category>power</category>
<total>5432</total>
</bill>
<bill>
<name>bill2</name>
<category>power</category>
<total>1200</total>
</bill>
<bill>
<name>bill2</name>
<category>gas</category>
<total>3464</total>
</bill>
Теперь у меня есть этот запрос, где я группирую xml по элементу company
name
и суммирую общее значение из bills
XDocument fDoc = XDocument.Load("company.xml");
XDocument rDoc = XDocument.Load("bills.xml");
var query = from f in fDoc.Elements("company")
where ((string)f.Attribute("active")).Equals("1")
orderby f.Element("name").Value
from r in racuniRoot.Elements("bill")
where (f.Element("category").Value).Split(',').Contains(r.Element("category").Value)
group new
{
BillTotal = Convert.ToInt32(r.Element("total").Value)
}
by f.Element("name").Value into g
select new
{
Name = g.Key,
Total = g.Sum(rec =>rec.BillTotal)
};
foreach (var k in query)
{
litList.Text += k.Name + k.Total;
}
Таким образом, результат с этим запросом:
name1 6632
name2 3464
И это нормально, но как выбрать другие элементы company
(location
и room
) в этом запросе?
Это то, что я хочу для конечного результата:
name1 6632 первый этаж 25
name2 3464 второй этаж 23
Как я могу это сделать?
Спасибо!