我有2张桌子:
Activities ActivityKeywords
********** ****************
ID --> ActivityID
Name Keyword
我需要返回与特定关键字匹配的所有活动。
答案 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();