我正在做一个过滤器,我需要所有的值,例如(rock = id 3和jazz = id 6)
我如何在LINQ中执行此操作?
我这样做但是这首先给出了摇滚乐和爵士舞......
private IQueryable<Performance>addGenreFilterToPerformanceQuery(IQueryable<Performance> query, List<int> genreFilters)
{
if (genreFilters != null)
{
foreach (var genreFilter in genreFilters)
{
return query.Where(p => p.Artist.Genres.Any(g => genreFilters.Contains(g.Id)));
}
}
return query;
}
有什么建议吗?
答案 0 :(得分:0)
foreach
并没有真正做任何事情。如果您希望查询与所有类型ID匹配而不是任何匹配,请使用All
,而不是Any
:
return query.Where(p => p.Artist.Genres.All(g => genreFilters.Contains(g.Id)));