感谢您的帮助。我开始学习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”的标签的帖子?
您可以这样做:
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()
警告,在进行字符串比较时,可能会遇到区分大小写的问题。如果在不需要密码或类似密码的情况下不需要区分大小写,通常在比较时我会全部小写。
var posts = await context.Posts
.Where(p => p.Tags.Any(t => t.TagName.ToLower() == "tag name"))
.ToListAsync()