我正在使用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();
请让我获取给定TagIds列表的文章列表。
提前致谢。
答案 0 :(得分:5)
我认为你正在寻找这个。
更改:
Select
至Where
tg.Tags.Contains
至tg.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();