编辑:根据下面的一篇文章,我找出了如何编写它的方法。答案在本文末尾。
我有一个商店……其中一个下拉菜单允许您按受欢迎程度(最常购买的商品会首先显示)对产品进行排序。
我知道如何在SQL中编写此内容,但是我在LINQ中失败了。有人可以为我翻译一下吗?希望如果我看到足够多的这些示例,我就能更好地学会自己做……
我只想把所有的项目都带回来,但是按受欢迎程度排序。您可以通过查看“OrderDetails”表中itemId出现的次数来确定哪些商品最受欢迎。
select i.*
from items i
left outer join (
select od.itemid, ct = COUNT(1)
from orderdetails od
join orders o on od.orderid = o.orderid
where o.ordersubmitteddate is not null
group by od.itemid
) pop on pop.itemid = i.itemid
order by pop.ct desc, i.name
------ 在下面回答 -------
这里是答案,我首先编写一个查询以确定要展示哪些“项”...然后我编写第二个查询来对其进行排序....
var items = db.Items.Where("STUFF");
items = from i in items
join pop in (
from od in db.OrderDetails
where od.Order.OrderSubmittedDate != null
group od by od.ItemId into g
select new { ItemId = g.Key, Ct = g.Count() }
) on i.ItemId equals pop.ItemId into pop_join
from x in pop_join.DefaultIfEmpty()
orderby x.Ct descending, i.Name
select i;