繁体   English   中英

使用导航属性的Linq到实体过滤器

[英]Linq to Entity Filter using Navigation Property

我想在实体框架中过滤导航属性。 从此处给出的示例中https://docs.microsoft.com/zh-cn/ef/core/querying/related-data

using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .ToList();
}

如果我想过滤特定的博客和帖子,该如何过滤? 即使帖子不存在,也必须返回博客详细信息

我想要下面的东西

var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .Where(b => b.BlogId == 1 && b.Posts.PostId == 2);

在上述情况下,如果postid 2可用于blogid 1,则应同时返回两者。 如果博客可用,则应仅返回博客详细信息。 我该如何实现?

从SQL角度看,它就像一个左联接。

问候乔

在两个查询上进行组联接应该起作用(以下假设您希望每个博客发表一篇文章,如果不是这样,请删除FirstOrDefault()):

var blogs = context.Blogs.Where(a => a.BlogId == 1);
var posts = context.Posts.Where(a => a.PostId == 2);


var blogWithPost = blogs.GroupJoin(posts, a => a.BlogId, a => a.PostId, (a,b) => new { Blog=a, Post = b.FirstOrDefault() });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM