这是我的SQL查询,我试图转换:
SELECT TOP (10)
t1.ProductName, t2.ProductName,
COUNT(DISTINCT t1.OrderId) AS num_orders
FROM
Reports t1
JOIN
Reports t2 ON t1.OrderId = t2.OrderId
AND t1.ProductId < t2.ProductId
GROUP BY
t1.ProductName, t2.ProductName
ORDER BY
num_orders DESC
如您所见,在“on”中,orderId
必须相同,并且其中一个的productId
必须小于另一个。
这是我迄今为止所取得的成就(非常不完整):
var reportData = await (from t1 in this.Context.Reports
join t2 in this.Context.Reports
on t1.OrderIdequals t2.OrderId
where t1.ProductId < t2.ProductId
into GroupedData
orderby GroupedData.Key
select new
{
GroupedData
}).ToListAsync();
如果我把一个表达式的“and”放在“on”中,我会得到一个错误,我已经尝试在一个单独的“where”中这样做,但它仍然不起作用。
此外,选择是不完整的,因为我还没有设法让所有上述代码的工作,所以不要给予它任何重要性。
我最接近让它为我工作的时候,我得到了这个人得到的同样的错误:How can I use Linq expression for Join with GroupBy in EF Core 3.1
这是我用来搜索信息的页面,但它没有显示我要查找的内容:https://learn.microsoft.com/en-us/ef/core/querying/complex-query-operators
我也用过Linqer和this repository of SQL to Linq,但是我用不了,我是大三学生:(
有人能帮助我或推荐我在哪里查找信息吗?
2条答案
按热度按时间rt4zxlrg1#
试试这个
sg3maiej2#
试试这个,