如何在linq内连接中添加小于或等于条件

How to add less than or equal to condition in linq inner join

我们有两个对象,DatesActiveEvents。想要在 linq 中对这些小于或等于条件执行内部连接。与下面 SQL 的 ref 相同,其中考虑 #Tables 是 C# 对象

Select A. from #Activities A
Inner Join #Dates D ON A.ActivityDate <= D.ProcessDate

尝试了以下方法,但没有给出正确的结果。

 var filteredActivity = (from e in ActiveEvents
            from p in dates
            where e.ActivityDate <= p.Date
            select new ActiveEvent
            {
                ActivityDate = p.Date,
                EventId = e.EventId
            }).ToList();

  var filteredActivity = (from e in ActiveEvents
            from p in dates.Where(r => e.ActivityDate <= r)
            select new ActiveEvent
            {
                ActivityDate = p.Date,
                EventId = e.EventId
            }).ToList();

你能提出更好的方法吗?

根据您的示例,查询在 ProcessDate 上过滤,但您的 linq 查询在 p.Date 上过滤。是同一个领域吗?你给出的第一个例子应该是正确的。

你可以这样试试

var filteredActivity = (from e in ActiveEvents
        join p in dates
        where e.ActivityDate <= p.ProcessDate 
        select new ActiveEvent
        {
            ActivityDate = p.Date,
            EventId = e.EventId
        }).ToList();

P/s:理想情况下,2 个表之间应包含 foreign key 以这样连接 join p in dates on e.Key equals p.ForeignKey