在实体框架4.0中添加条件连接

时间:2011-07-09 07:46:41

标签: c# linq entity-framework entity-framework-4 linq-to-entities

我正在尝试在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)),它会知道在那里进行连接吗?或者它会进行子选择吗?

1 个答案:

答案 0 :(得分:2)

最简单的事情是尝试它并查看生成的SQL ...我怀疑它将使用嵌套的subselect,查询优化器将将其作为类似连接的构造,我期待。

可以自己做一个加入,只是确保你再次选择原始值...但如果你真的只是想知道任何帖子是否有给定的网站ID ,你的“任何”选项可能更清晰。如果有多个匹配的帖子,则正常连接最终会返回重复的文章。你可以使用Distinct,但这似乎有点无意义。

相关问题