如何在数据库中搜索与帖子相关的标签

本文关键字:标签 数据库 搜索 | 更新日期: 2023-09-27 18:21:29

我有一个帖子和标签类

public class Post
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime DateTime { get; set; }
    public string Body { get; set; }
    public virtual ICollection<Tag> Tags
    {
        get
        {
            if (_tags == null)
            {
                _tags = new Collection<Tag>();
            }
            return _tags;
        }
        set { _tags = value; }
    }
    private ICollection<Tag> _tags;
}
public class Tag
{
    [Key]
    public int Id { get; set; }
    [Required]
    [MaxLength(50)]
    [Index(IsUnique = true)]
    public string Name { get; set; }
    public virtual ICollection<Post> Posts { get; set; }
}

我正试着通过他们的标签来搜索帖子。

这是我的搜索方法

    public ActionResult Search(int id)
    {
        var posts = from p in db.Posts
                    from t in db.Tags
                    where p.Tags.Contains(t)
                    select p;
        foreach (var post in posts)
        {
            Console.WriteLine(string.Format("Post Name {0}", post.Title));
        }
    }

但这肯定不会起作用。标签是一个集合。

那么,我如何返回一个帖子列表,其中包含一个带有给定函数id的标签?

如何在数据库中搜索与帖子相关的标签

var posts = db.Posts.Where(p=>p.Tags.Any(t=>t.id==id));