原始SQL对单个表使用相关的子查询,有没有可能用单个LINQ查询来翻译?
SELECT * From dbo.Products AS P1
WHERE SalePrice > (SELECT AVG(SalePrice)
FROM dbo.Products AS P2
WHERE P1.Type = P2.Type GROUP BY Type)
它按类型对产品进行分组,并选择SalePrice大于类型组平均值的产品。LINQ数据源是一个EFCore DbSet。
试试下面的查询。
var products = context.Products; var grouped = from p in products group p by p.Type into g select new Type = g.Key, Average = g.Average(x => x.SalePrice) var query = from p in products join g in grouped on p.Type equals g.Type where p.SalePrice > g.Average select p;