我正在尝试在EF4中进行内部联接,但仅限于满足某个条件。 我的功能如下:
List<Articles> Search(int? postSiteId) {
var myquery =
from
articles
in
context.Articles
where
articles.IsDeleted = 0;
if(postSiteId != null) {
// Add an inner join on the Posts table and check that Posts.SiteId = postSiteId ---
}
}
我不确定如何在主查询之外添加if语句中的join和condition。我找不到几个小时的搜索。
我不确定是否需要加入。如果我添加where条件:query = query.Where(article => article.Posts.Any(p => p.SiteId == postSiteId.Value))
,它会知道在那里进行连接吗?或者它会进行子选择吗?
答案 0 :(得分:2)
最简单的事情是尝试它并查看生成的SQL ...我怀疑它将使用嵌套的subselect,查询优化器将将其作为类似连接的构造,我期待。
你可以自己做一个加入,只是确保你再次选择原始值...但如果你真的只是想知道任何帖子是否有给定的网站ID ,你的“任何”选项可能更清晰。如果有多个匹配的帖子,则正常连接最终会返回重复的文章。你可以使用Distinct
,但这似乎有点无意义。