Sql 实体框架查询中的计数和别名
我有一个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 (
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)
你试过什么?如果您完全陷入困境,请看一些示例: