gpt4 book ai didi

c# - 我如何将此 SQL 翻译成 LINQ? (按人气排序)

转载 作者:行者123 更新时间:2023-11-30 18:01:34 24 4
gpt4 key购买 nike

编辑:根据下面的一篇文章,我想出了如何写它。答案在本文末尾。

我有一家商店...其中一个下拉菜单允许您按受欢迎程度对产品进行排序(购买最多的商品首先显示)。

我知道如何用 SQL 编写它,但我在 LINQ 中失败得很惨。有人可以帮我翻译这个吗?希望如果我看到足够多的这些例子,我自己会做得更好......

我只是想带回所有元素,但按受欢迎程度排序。您可以通过查看 itemId 在“OrderDetails”表中出现的次数来判断哪些最受欢迎。

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;

最佳答案

你可以试试

var pop =   from od in context.OrderDetail
join o in context.Order on od.OrderId equals o.OrderId
where o.OrderSubmittedDate != null
group by od.ItemId into g
select new { ItemId = g.Key, Count = g.Count() };

var query = from p in pop
join i in items on p.ItemId equals i.ItemId into j
from x in j.DefaultIfEmpty()
order by x.Count descending, i.Name;

这绝对会让您朝着正确的方向前进,但我不能保证它能编译。这个想法是您可以在 LINQ to SQL 中嵌套查询。

关于c# - 我如何将此 SQL 翻译成 LINQ? (按人气排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com