Справка по вложенным запросам LINQ - PullRequest
0 голосов
/ 19 июля 2011

Я пытаюсь выполнить запрос 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 голосов
/ 19 июля 2011

Ваша таблица событий имеет внешний ключ для Person. Это кажется необычным, поскольку подразумевает, что событие может иметь только одного человека. Я предполагаю, что ваша таблица событий является таблицей «многие-многие» в этой модели. Предполагая, что у вас есть связь между People и Events (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}

(заметьте, вы, возможно, захотите проецировать в какую-то другую структуру здесь, а не проецировать выбранные мной, которые я показываю здесь.) Если бы у нас было больше информации о вашей модели или о том, что вы пытаетесь достичь, мы могли бы больше помочь ,

...