【问题标题】:LINQ 2 Entities SubQuery with Except (not in) and conditionLINQ 2 Entity SubQuery with except (not in) 和条件
【发布时间】:2011-03-07 22:44:51
【问题描述】:

我有这个数据库结构

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;

需要帮助...

【问题讨论】:

    标签: linq-to-entities


    【解决方案1】:
    var q = from s in context.Seminars
            where s.Date > something
                  && (!s.Events.Any())
            select s;
    

    您没有在Seminar 中显示导航属性,以便通过EventSeminar 导航到Event,所以如果我猜错了,请在上面替换它。

    【讨论】:

    • SeminarClass 有日期,否则您指出了正确的方向 - s.Event.Any()(我使用了 count == 0)。
    • SeminarClass 的基数在您的问题中并不清楚。你现在有答案吗,或者你需要帮助吗?如果是,Seminar -> SeminarClass 的基数是多少?
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多