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