Я соединил две коллекции из XML-файла, содержащего информацию о заказах в ресторане и их номерах заказов, какие товары находятся в этих заказах и сколько стоит каждый товар. Мне нужно найти, какой заказ является самым дорогим, а какой - наименее дорогим, используя операции LINQ. Я дошел до того, что у меня есть объединенная коллекция, но я не уверен, как бы я суммировал каждый заказ в отдельности, а затем нашел бы, какая стоимость больше / меньше.
Вот что у меня есть для этой части:
private void Question3_Click(object sender, RoutedEventArgs e)
{
var menuItems = doc
.Root
.Element("menuItems")
.Elements("menuItem")
.Select(s => new
{
itemNr = s.Attribute("nr"),
itemPrice = double.Parse(s.Attribute("price").Value, NumberStyles.Currency),
name = s.Value
});
var orders = doc
.Root
.Element("orders")
.Elements("order")
.Select(r => new
{
itemNr = r.Attribute("nr")
});
var joinedList = menuItems
.Join(orders,
menuItem => menuItem.itemNr,
order => order.itemNr,
(menuItem, order) => new
{
orderNr = order.itemNr,
itemNr = menuItem.itemNr,
itemPrice = menuItem.itemPrice
});
//.Sum(order => order.itemPrice);
AnswerBox.Text = joinedList.ToString();
}
РЕДАКТИРОВАТЬ: Это то, что у меня сейчас, и я получаю "Последовательность не содержит элементов"
private void Question3_Click(object sender, RoutedEventArgs e)
{
var menuItems = doc
.Root
.Element("menuItems")
.Elements("menuItem")
.Select(s => new
{
itemNr = s.Attribute("nr"),
itemPrice = double.Parse(s.Attribute("price").Value, NumberStyles.Currency),
name = s.Value
});
var orders = doc
.Root
.Element("orders")
.Elements("order")
.Select(r => new
{
orderNr = r.Attribute("nr")
});
var joinedList = menuItems
.Join(orders,
menuItem => menuItem.itemNr,
order => order.orderNr,
(menuItem, order) => new
{
orderNr = order.orderNr,
itemNr = menuItem.itemNr,
itemPrice = menuItem.itemPrice
}).GroupBy(order => order.itemNr)
.Select(g => new
{
orderNr = g.Key,
Sum = g.Sum(list => list.itemPrice)
})
.Max(g => g.Sum);
//var least = joinedList.Min(list => list.itemPrice);
AnswerBox.Text = joinedList.ToString();
}
XML:
B.L.T.
Чизбургер с беконом
Пахлава
Шеф-повар салат
Куриное филе
Стейк из курицы
Куриный Кабоб
Чили бургер
Собака чили
Холодная индейка
Кукурузная собака
Ужин салат
Чизбургер с двойным беконом
Двойной бургер
Двойной чизбургер
Двойной королевский бургер
Филе рыбы
Греческий салат
Жареный сыр
Жареная ветчина и сыр
гироскоп
Гироскопический ужин (салат и картофель фри)
Хот-дог
Сыр Бекон Юниор
Младший бургер
Младший чизбургер
Юниор Роял (Пастрами)
Кексы
Грибной бургер
Кольца лука
Пастрами Мельт
Пэтти Мэлт
Четверть Бургер
Четверть Бургер с сыром
Королевский бургер (пастрами)
Задушенный чили чизбургер
Стейк фри
Тунец Мельт
Салат из тунца
Сэндвич с тунцом