답변:
원하는 것 같습니다.
var movies = _db.Movies.Where(p => p.Genres.Intersect(listOfGenres).Any());
Contains
반복적으로 사용하면 시간상 O (x * y) 연산으로 끝나지만 공간에서는 O (1)으로 끝납니다. 여기서 x는 첫 번째 컬렉션의 크기이고 y는 두 번째 컬렉션의 크기입니다. Using Intersect
is O (x + y) in time but O (y) in space-두 번째 컬렉션에서 해시 세트를 구성하여 첫 번째 컬렉션의 항목 포함 여부를 빠르게 확인할 수 있습니다. 참조 codeblog.jonskeet.uk/2010/12/30/... 자세한 내용은
아니면 이렇게
class Movie
{
public string FilmName { get; set; }
public string Genre { get; set; }
}
...
var listofGenres = new List<string> { "action", "comedy" };
var Movies = new List<Movie> {new Movie {Genre="action", FilmName="Film1"},
new Movie {Genre="comedy", FilmName="Film2"},
new Movie {Genre="comedy", FilmName="Film3"},
new Movie {Genre="tragedy", FilmName="Film4"}};
var movies = Movies.Join(listofGenres, x => x.Genre, y => y, (x, y) => x).ToList();
.StartWith, .EndsWith, .Contains
에서 여기 작동,하지만 당신의 쿼리를 사용하여 수행 할 수 있습니다