2

我正在使用 EF 5 Code First 和 VS 2012。我有文章和标签的类。每篇文章将至少关联一个标签。请参阅下面的课程。

public class Article
{
    public int ArticleId { get; set; }
    public virtual ICollection<ArticleTag> Tags { get; set; }
}
public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }
}

public class ArticleTag
{
    public int ArticleId { get; set; }
    public int TagId { get; set; }

    // navigation property
    public virtual Article Article { get; set; }
    public virtual Tag Tag { get; set; }
}

下面是我试过的代码。requestTags包含 TadgIds 的列表。repBase是数据库上下文。但下面的代码正在返回所有文章。

var idList = requestTags.tags.Select(t => t.id).ToList();
 var result= repBase.GetAll<Article>().Select(tg => tg.Tags.Where(tk => idList.Contains(tk.TagId))).ToList();

请帮助我获取给定 TagId 列表的文章列表。

提前致谢。

4

1 回答 1

5

我想你正在寻找这个。

改变:

  • SelectWhere
  • tg.Tags.Containstg.Tags.Any

例子:

var idList = requestTags.tags.Select(t => t.id).ToList();

var result= repBase.GetAll<Article>().Where(tg => tg.Tags.Any(tk => idList.Contains(tk.TagId))).ToList();
于 2012-10-24T14:57:12.303 回答