Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 实体框架查询中的计数和别名_Sql_Entity Framework - Fatal编程技术网

Sql 实体框架查询中的计数和别名

Sql 实体框架查询中的计数和别名,sql,entity-framework,Sql,Entity Framework,我有一个sql查询: select top 10 NAME, count(*) as Number from Products as pro join Orders as ord on ord.ID_PRODUCT = pro.ID group by NAME order by Number desc 此代码需要在实体框架中编写。 如何编写?好的-我还没有测试过这个,但它应该满足您的需要 var result = ( from q2 in (

我有一个sql查询:

select top 10 NAME, count(*) as Number
from Products as pro
join Orders as ord on ord.ID_PRODUCT = pro.ID
group by NAME
order by Number desc
此代码需要在实体框架中编写。
如何编写?

好的-我还没有测试过这个,但它应该满足您的需要

var result =     
     (
       from q2 in
       (
         from q1 in
         (
           from p in Products
           join o in orders on p.ID equals o.ID_PRODUCT
           select p.NAME
         )
         group q1 by q1 into grp
         select new{NAME = grp.Key, Number = grp.Count()}
       )
     orderby q2.Number descending
     select q2
     ).Take(10);
  • 这里,订单和产品之间的连接是最内部的查询(q1)
  • 我们只关心选择名称(每个订单重复),因此行
    select p.name
  • 这是与GROUPBY语句一起分组的-我们得到select键(分组依据的对象-在本例中为名称)和该组中的项目计数。这将成为子查询q2
  • 最后我们按降序排列q2,并使用。取(10)得到前10名
试试这个

var result = dbContext.Products
                      .GroupBy(p => p.Name)
                      .Select(g => new { Name = g.Key, Number = g.Count()}
                      .OrderByDescending(x => x.Number)
                      .Take(10)
如果您正在计算每个产品的订单数量,请尝试此操作

var result = dbContext.Orders
                      .GroupBy(o => o.Product.Name)
                      .Select(g => new { Name = g.Key, Number = g.Count()}
                      .OrderByDescending(x => x.Number)
                      .Take(10)

你试过什么?如果您完全陷入困境,请看一些示例: