EF Core:Return 所有在其集合中具有 属性==x 的项目

EF Core: Return all items that have item with property==x in their collection

感谢您提前提供任何帮助。我开始学习 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; }

}

我如何形成查询 returns 所有标签名称为 "X" 的帖子?

你可以这样做:

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

编辑:

您可以从 include 中获取它。

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

var posts = tag.Posts.Tolist()

请注意,在进行字符串比较时,您可能 运行 遇到一些区分大小写的问题。如果在密码或类似情况下不需要区分大小写,我通常会在比较时将所有内容小写。

var posts = await context.Posts
    .Where(p => p.Tags.Any(t => t.TagName.ToLower() == "tag name"))
    .ToListAsync()