【发布时间】:2010-11-02 05:22:47
【问题描述】:
我已将 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. 培根芝士汉堡 巴卡拉 主厨沙拉 鸡柳 鸡炸牛排 鸡肉串 辣椒汉堡 辣椒狗 冷火鸡 玉米热狗 晚餐沙拉 双培根芝士汉堡 双汉堡 双层芝士汉堡 双皇家汉堡 鱼片 希腊式沙拉 烤奶酪 烤火腿和奶酪 陀螺仪 陀螺晚餐(沙拉和薯条) 热狗 初级培根奶酪 小汉堡 初级芝士汉堡 少年皇家(熏牛肉) 松饼 蘑菇瑞士汉堡 洋葱圈 熏牛肉融化 帕蒂熔体 四分之一汉堡 四分之一汉堡配奶酪 皇家汉堡(熏牛肉) 闷热的辣椒芝士汉堡 牛排薯条 金枪鱼三明治 金枪鱼沙拉 金枪鱼三明治
【问题讨论】:
-
您如何识别每个订单?您需要订单号或id,然后您可以按订单号/id进行汇总
-
每个订单都有一个订单号,在 XML 文件中是“nr”。
-
是否也可以粘贴您的xml?
-
我尝试发布它,但它所做的只是发布每个元素的所有名称..