如何在linq内连接中添加小于或等于条件
How to add less than or equal to condition in linq inner join
我们有两个对象,Dates
和 ActiveEvents
。想要在 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
我们有两个对象,Dates
和 ActiveEvents
。想要在 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