当前位置: 首页 > 面试题库 >

具有GROUP和SUM的LINQ查询

吉凯捷
2023-03-14
问题内容

请帮助我处理使用带有GROUP和SUM的LINQ进行查询的问题。

// Query the database
IEnumerable<BestSeller> 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的总和排序。
  • 公司是“我的公司”
  • 然后将数据管道到我的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个项目”没有任何意义。“ Top”以什么方式?您可能想要:

from bs in db.MYDATABASE.OrderByDescending(x => x.Price).Take(25)

或类似的东西。请注意,如果这些公司都没有“ MY COMPANY”公司,那么您最终将没有结果…

或者,如果您想要排名前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);


 类似资料:
  • 我有以下代码块可以正常工作; 这给了我2个错误; 错误%1“System.Collections.ObjectModel.ObservableCollection.ObservableCollection(System.Collections.Generic.List)”的最佳重载方法匹配包含一些无效参数 错误2参数1:无法从“System.Linq.IQueryable>”转换为“System.

  • 问题内容: 我正在尝试找出如何在LINQ中编写SQL语句,但是暂时找不到一种方法,这是SQL命令: 有人可以帮我使用linq语法吗? **到目前为止,我一直在尝试(感谢levanlevi) 但我收到以下错误: http://i.stack.imgur.com/AkJ5V.png 问题答案:

  • 问题内容: 我很难弄清楚如何将这个简单的SQL语句转换为(c#)linq到SQL: 任何帮助表示赞赏 问题答案: 我仍在学习LINQ,但这似乎可行 我希望能够很好地将LINQ转换为SQL,因为我仅在对象上进行过尝试。

  • 我有一堆数据帧,我连接成一个大数据帧。所有行都有一个datetime、一个名称,然后是一些具有随机值的列,例如,数据帧可以如下所示: 现在,我需要按对这些行进行分组,并将它们分成60分钟的bins,我目前的做法如下: 这可以用任何方式来完成吗?或者我必须将我的数据帧一分为二,然后在之后加入?

  • 问题内容: 我需要将该SQL查询转换为Linq: 我尝试了以下代码,但在“ a.ArticleName”处收到错误消息,提示“ ArticleName”的定义将丢失。 你们中有人有人知道如何解决此问题吗? 谢谢你的帮助! 问题答案: 您收到此错误是因为分组未返回,但 您需要更改代码以使用: