如何在一个查询中从2个表中选择2个对象?

时间:2019-07-18 22:58:14

标签: linq entity-framework-core

我想通过linq方法(例如.Where.Select等)在一次查询中获得以下结果,

内部联接更好。

new {
    Blog = MyDbContext.Blogs.SingleOrDefault(b => b.Url == "xxx.com"),
    Post = MyDbContext.Posts.SingleOrDefault(p => p.Blog.Url == "xxx.com" &&
                                                  p.Author == "Jack")
}

型号:

public class Blog 
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post 
{
    public int PostId { get; set; }
    public string Author { get; set; }

    public Blog Blog { get; set; }
}

public class MyDbContext 
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
}

1 个答案:

答案 0 :(得分:0)

var ans = MyDbContext.Blogs.Where(b => b.Url == "xxx.com")
                           .Select(b => new {
                                   Blog = b,
                                   Post = b.Posts.Where(p => p.Author == "Jack").FirstOrDefault()
                            })
                            .SingleOrDefault();