.net - 带有过滤条件的 LINQ 连接

标签 .net linq linq-to-sql join criteria

这样的事情在 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/

相关文章:

c# - 如何通过属性值从字典中获取项目

vb.net - Linq 中的动态Where 子句中的日期比较给出重载异常

c# - EF6 异步方法困惑

.net - 转义 SQL 查询 - 支持 .Net 中的不同数据库平台

.net - TweetSharp 获取关注者数量

c# - Linq to SQL with Left Outer Join and Group By With Sum - 如何

c# - 在 LINQ to SQL 中动态构造 "or"LIKE 查询

c# - 如何使用System.DirectoryServices.Protocols更改密码

c# - 知道 Iqueryable 的元素数量

具有分隔值的多个值的 C# app.config