1

我正在使用带有 lambda 表达式的 EF 来查询表。

var eventToPushCollage = eventsForEvaluation.Where(x => x.DateTimeStart > currentDateTime && currentDateTime >= x.DateTimeStart.AddMinutes(-15));

eventsForEvaluation有一个属性 ID。

在我的数据库中,我还有另一个PushedEvents使用 Id 属性调用的表。

注意:这两个表没有外键关系

我需要对我的查询应用另一个过滤,并获取第二个表中也不存在的所有记录PushedEvents

我想知道是否有可能和示例代码。

4

2 回答 2

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;

更新(方法语法)

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);
于 2013-01-29T09:28:05.557 回答
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;
于 2013-01-29T09:28:35.163 回答