如何使用L2E执行此查询?

时间:2009-08-31 19:58:56

标签: c# linq linq-to-entities

我有2张桌子:

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

我需要返回与特定关键字匹配的所有活动。

4 个答案:

答案 0 :(得分:5)

var q = from a in Context.Activities
        where a.Keywords.Any(k => k.Keyword == someKeyword)
        select a;

正如我在评论中所说,在LINQ to Entities中使用join几乎总是错误的。应该使用关系属性。

答案 1 :(得分:1)

如果您已定义关系,请查看Craig Stuntz的答案以获得更清晰的方式

我之前的回答是错误的,但这对我有用。

var activities = from a in db.Activities 
                 join ak in db.ActivityKeywords on a.ID equals ak.ActivityID 
                 where ak.Keyword == "yourkeyword" 
                 select a;

答案 2 :(得分:0)

我认为你需要像

这样的东西
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;

更多信息here

答案 3 :(得分:0)

var results = (from a in Activities
               from k in ActivityKeywords
               where k.Keyword == "keyword" && k.ActivityID == a.ID
               select a).Distinct();