0

我正在尝试 LINQ 查询,但我已经被难住了一段时间。我尝试在此处查找文档,但似乎找不到足够的部分来完成整个过程。

如果我要在 SQL 中编写这个,查询将是

 SELECT *
 FROM (Person JOIN Event ON Person.ID = Event.PersonID) as t
 Where (Event.Type = "Invitation") AND !Exists(SELECT *
                                             FROM Event
                                             WHERE Event.Type = "Something" 
                                                  AND Event.Conference = "someString"
                                                  AND t.ID = Event.PersonID)

任何输入将不胜感激,即使您只有部分解决方案。

4

1 回答 1

0

您的 Event 表似乎有一个 Person 的外键。这似乎不寻常,因为这意味着一个事件只能有一个人。我将假设您的事件表是此模型中的多对多表。假设您在人员和事件之间有关联(PeopleEvents?),您应该能够使用以下内容(使用 !Any 代替 !Exists)来做到这一点:

from person in People
from event in person.Events
where event.Type == "Invitation" &&
 !person.Events.Any(event => event.Type == "Something" && event.Conference == "someString")
select new {person, event}

(请注意,您可能希望在这里投影到其他结构,而不是投影我在这里展示的许多选择。)如果我们有更多关于您的模型或您想要完成的信息,我们可能会提供更多帮助。

于 2011-07-19T17:24:01.920 回答