1

EFとラムダ式を使用してテーブルをクエリしています。

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

テーブルeventsForEvaluationにはプロパティIDがあります。

私のDBにはPushedEvents、Idプロパティで呼び出される別のテーブルもあります。

注:2つのテーブルには外部キーの関係はありません

クエリに別のフィルタリングを適用し、2番目のテーブルにも存在しないすべてのレコードをフェッチする必要があります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;

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);
于 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 に答える