LINQ查询与GROUP和SUM
请帮我解决使用LINQ和GROUP和SUM的问题。
// Query the database IEnumerable best_sellers = from bs in (db.MYDATABASE).Take(25) where bs.COMPANY == "MY COMPANY" group bs by bs.PRODCODE into g orderby g.Sum(g.MQTY) select new BestSeller() { product_code = , product_description = , total_quantity = };
我希望:
- 从db.MYDATABASE获取前25项
- 将所有结果分组为bs.PRODCODE
- 按每个bs.PRODCODE的总和订购
- 公司在哪里是“我的公司”
- 然后将数据传输到我的
BestSeller()
对象
我很困惑,因为只要我将我的group
添加到混音中,我的bs
变量就变得无用了。
我很困惑,因为只要我将我的组添加到混音中,我的bs变量就变得无用了。
是的,因为您不再拥有单个项目 – 您现在正在处理一系列项目。 您可以获得每个组的第一项,我认为这是获取描述的有效方式?
var query = from bs in db.MYDATABASE.Take(25) where bs.COMPANY == "MY COMPANY" group bs by bs.PRODCODE into g orderby g.Sum(x => x.MQTY) select new BestSeller { product_code = g.Key, product_description = g.First().DESCRIPTION, total_quantity = g.Sum(x => x.MQTY) };
请注意,如果不指定顺序,“db.MYDATABASE中的前25项”没有意义。 “顶部”以什么方式? 你可能想要:
from bs in db.MYDATABASE.OrderByDescending(x => x.Price).Take(25)
或类似的东西。 请注意,如果没有一家拥有“我公司”的公司,您最终将无法获得任何结果……
或者如果你想要前25名畅销书,你需要在最后的“拿”部分:
var query = from bs in db.MYDATABASE where bs.COMPANY == "MY COMPANY" group bs by bs.PRODCODE into g orderby g.Sum(x => x.MQTY) descending select new BestSeller { product_code = g.Key, product_description = g.First().DESCRIPTION, total_quantity = g.Sum(x => x.MQTY) }; var top25 = query.Take(25);