我正在使用带有lambda表达式的EF来查询表。
var eventToPushCollage = eventsForEvaluation.Where(x => x.DateTimeStart > currentDateTime && currentDateTime >= x.DateTimeStart.AddMinutes(-15));
表eventsForEvaluation
具有属性ID。
在我的数据库中,我还有另一个名为PushedEvents
的表,其中包含Id属性。
注意:两个表没有外键关系。
我需要对我的查询应用另一个过滤,并获取第二个表PushedEvents
中也不存在的所有记录。
我想知道是否有可能和示例代码。
答案 0 :(得分:2)
使用群组加入:
var eventToPushCollage =
from e in eventsForEvaluation
join p in PushedEvents on e.Id equals p.Id into g
where e.DateTimeStart > currentDateTime &&
currentDateTime >= e.DateTimeStart.AddMinutes(-15) &&
g.Count() == 0 // NOT present in second table
select e;
UPDATE(方法语法)
var eventToPushCollage = eventsForEvaluation
.GroupJoin(PushedEvents,
e => e.Id,
p => p.Id,
(e,g) => new { e, g })
.Where(x => x.e.DateTimeStart > currentDateTime &&
currentDateTime >= x.e.DateTimeStart.AddMinutes(-15) &&
x.g.Count() == 0)
.Select(x => x.e);
答案 1 :(得分:1)
试试这个
var eventToPushCollage =
from x in eventsForEvaluation
where
!PushedEvents.Any(item => item.Id == x.Id)
&& x.DateTimeStart > currentDateTime
&& currentDateTime >= x.DateTimeStart.AddMinutes(-15)
select x;