Как я могу выполнить этот запрос, используя L2E? - PullRequest
2 голосов
/ 31 августа 2009

У меня есть 2 таблицы:

Activities       ActivityKeywords
**********       ****************
ID         -->   ActivityID
Name             Keyword

Мне нужно вернуть все действия, которые соответствуют определенному ключевому слову.

Ответы [ 4 ]

5 голосов
/ 01 сентября 2009
var q = from a in Context.Activities
        where a.Keywords.Any(k => k.Keyword == someKeyword)
        select a;

Как я уже говорил в комментариях, почти всегда неправильно использовать объединение в LINQ to Entities. Вместо этого следует использовать свойства отношений.

1 голос
/ 01 сентября 2009

зачитайте ответ Крейга Стунца для более чистого пути, если у вас есть определенное отношение

Мой предыдущий ответ был неправильным, но это работает для меня.

var activities = from a in db.Activities 
                 join ak in db.ActivityKeywords on a.ID equals ak.ActivityID 
                 where ak.Keyword == "yourkeyword" 
                 select a;
0 голосов
/ 01 сентября 2009
var results = (from a in Activities
               from k in ActivityKeywords
               where k.Keyword == "keyword" && k.ActivityID == a.ID
               select a).Distinct();
0 голосов
/ 01 сентября 2009

Я думаю, вам нужно что-то вроде

Give me all Activities which ID are in a list of ActivitiyKeywords.ID's

Если это ваш вопрос, вы можете попробовать это:

var ids = from k in db.ActivityKeywords select k.ActivityID;

var result = from a in db.Activities where ids.Contains(a.ID) select a;

Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...