EF核心:返回其集合中具有property == x的项目的所有项目

问题描述 投票:0回答:2

感谢您的帮助。我开始学习EF Core,假设我有这两门课:

 public class Post

{
    public Guid Id { get; set; } = Guid.NewGuid();

    public String Name { get; set; }

    public ICollection<Tag> Tags { get; set; }

}



public class Tag

{

    public Guid TagId { get; set; } = Guid.NewGuid();

    public String Name { get; set; }

    public Guid PostId { get; set; }

    public Post Post { get; set; }

}

如何形成一个查询,以返回所有带有名称为“ X”的标签的帖子?

c# database entity-framework ef-code-first
2个回答
0
投票

您可以这样做:

var postsWithTagX = await context.Post
.Where(p => p.Tags.Any(t => t.TagId == "The Tag Id you want"))
.ToListAsync()

编辑:

您可以从包含中获得它。

var tag = await context.Tag
.Include(x => x.Post)
.FirstOrDefaultAsync(t => t.TagId == "The Tag Id you want");

var posts = tag.Posts.Tolist()

0
投票

警告,在进行字符串比较时,可能会遇到区分大小写的问题。如果在不需要密码或类似密码的情况下不需要区分大小写,通常在比较时我会全部小写。

var posts = await context.Posts
    .Where(p => p.Tags.Any(t => t.TagName.ToLower() == "tag name"))
    .ToListAsync()
© www.soinside.com 2019 - 2024. All rights reserved.