使用linq是否可以执行此查询?
SELECT
SUM([Weight]) * (SELECT TOP 1 Value FROM dbo.Prices WHERE '2020-04-02' BETWEEN [From] AND [To] AND ScrapId = CS.ScrapId), [FromCompany] ,CS.[ScrapId]
FROM [dbo].[CollectedScrap] AS CS
WHERE Date BETWEEN '2020-05-01' AND '2020-05-29' GROUP BY[ScrapId], [FromCompany]
最新测试:
content.table.Where(cs => cs.Date > from)
.Where(cs => cs.Date < to)
.GroupBy(collectedGroup => new { collectedGroup.ScrapId, collectedGroup.FromCompany})
.Select(group => new
{
total = group.Sum(c => c.Weight) * _context.Prices.Select(p => new { p.ScrapId, p.Value, p.From, p.To })
.Where(a => a.From > from)
.Where(a => a.To < to)
.Where(a => a.ScrapId == group.Select(gr => new { gr.ScrapId }).First().ScrapId)
.FirstOrDefault()
}).ToList();
表之间没有直接关系。我使用子查询按日期获取正确的价格,并将其与group by查询的sum结果相乘。
1条答案
按热度按时间uemypmqf1#
对于普通sql,我可以为连接使用一个条件。我怎样才能在连接中使用where。现在它的行为几乎像一个右连接(我需要将连接限制为一个结果)。----立即使用groupjoin进行测试
生成的sql: