LINQ嵌套查询帮助

时间:2011-07-19 17:05:02

标签: sql linq sql-to-linq-conversion

我正在尝试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)

即使您只有部分解决方案,也会非常感谢任何输入。

1 个答案:

答案 0 :(得分:0)

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

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}

(注意,你可能想在这里投射到其他一些结构,而不是投射我在这里展示的那些选择。)如果我们有关于你的模型的更多信息或者你想要完成什么,我们可能会更有帮助。