我有一个关键字ID列表:{1,2,3,4}
关键字实体:
public class Keyword
{
public int Id { get; set; }
public virtual ICollection<Ad> Ads { get; set; }
}
包含每组关键字的广告列表:
public class Ad
{
public int Id { get; set; }
public virtual ICollection<Keyword> Keywords { get; set; }
}
如何获得与所有关键字ID列表匹配的广告ID?
由于
答案 0 :(得分:0)
如果keywords
是您搜索的关键字ID数组,则allAds
是要搜索的所有广告的列表:
var keywords = new[]{1,2,3,4};
List<Ad> allAds = new List<Ad>();
以下语句应找到包含所有必需关键字的所有广告:
var matchingAds = allAds.Where(ad =>
keywords.All(keyword =>
ad.Keywords.Any(x => x.Id == keyword)
)
);
答案 1 :(得分:0)
var keywords = new[]{1,2,3,4};
var query = Keywords.Where(kw => keywords.Any(n => n == kw.Id))
.SelectMany(m => m.Ads)
.Select(n => n.Id).ToList();