LINQ 2实体SubQuery,带有Except(不在)和条件

时间:2011-03-07 10:52:48

标签: linq-to-entities

我有这个数据库结构

EVENT
--- EVENTID (PK)

EVENTSEMINAR
--- EVENTID (PFK)
--- SEMINARID (PFK)

SEMINAR
--- SEMINARID (PK)

SEMINARCLASS
--- SEMINARID (PFK)
--- CLASSID. (PK)
--- Date

我想获得一个没有链接到某个事件的所有研讨会(包括他们的类)的列表,并且发生在特定日期之后。

Select * 
from Seminar, SeminarClass 
Where (Seminar.SeminarId not in (select SeminarId 
                                 from EventSeminar) 
       and seminar.SeminarId = SeminarClass.SemianrId 
       and SeminarClass.Date > something);

如何将其转换为LINQ 2实体?

(没有像EventSeminar这样的实体,因为它只是一个导航属性)

尝试用一些查询来解决这个问题导致我遇到麻烦,因为我无法使用一个结果作为参数来预期在第二个...需要一些我不知道如何实现的转换:

var Seminars = from e in context.Event
                                .Include("Seminar")
                                .Where(x=>x.Seminar != null) 
               select e.Seminar;

var SC = from c in context.Seminar.Except(Seminars) select c;

需要一些帮助...

1 个答案:

答案 0 :(得分:0)

var q = from s in context.Seminars
        where s.Date > something
              && (!s.Events.Any())
        select s;

您不会在Seminar中显示导航属性,以便在EventSeminarEvent之间进行导航,因此如果我猜错了,请将其替换为以上内容。