这样的事情在 linq 中是如何完成的?它在 JOIN 上有过滤条件。
这取自这个问题:SQL Filter criteria in join criteria or where clause which is more efficient
select salesman.salesmanid, max(sales.quantity)
from salesman
inner join sales on salesman.salesmanid =sales.salesmanid
and sales.salesdate < salesman.promotiondate
group by salesman.salesmanid
谢谢
最佳答案
除了等于
之外,您无法加入
任何其他内容,但这可能不是您想要的。我认为 SQL 查询写得很笨拙,并且日期比较应该在 WHERE
子句中,但我认为这是主观的。无论如何,这是在 Linq 中执行此操作的唯一方法:
var results =
from sm in salesman
join s in sales on sm.salesmanid equals s.salesmanid
where s.salesdate < sm.promotiondate
group s by s.salesmanid into g
select new { salesmanid = g.Key, maxsales = g.Max(s => s.quantity) };
注意 - 更正组行上的拼写错误
关于.net - 带有过滤条件的 LINQ 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098041/