반응형
목록에 목록에있는 항목이있는 linq
linq를 사용하여 속성 목록이 다른 목록과 일치하는 항목 목록을 검색하려면 어떻게해야합니까?
이 간단한 예제와 의사 코드를 사용하십시오.
List<Genres> listofGenres = new List<Genre>() { "action", "comedy" });
var movies = _db.Movies.Where(p => p.Genres.Any() in listofGenres);
원하는 것 같습니다.
var movies = _db.Movies.Where(p => p.Genres.Intersect(listOfGenres).Any());
이를 위해 Contains쿼리를 사용할 수 있습니다 .
var movies = _db.Movies.Where(p => p.Genres.Any(x => listOfGenres.Contains(x));
for HashSet대신 사용 하면 다음을 수행 할 수 있습니다.ListlistofGenres
var genres = new HashSet<Genre>() { "action", "comedy" };
var movies = _db.Movies.Where(p => genres.Overlaps(p.Genres));
이것도 가능할까요?
var movies = _db.Movies.TakeWhile(p => p.Genres.Any(x => listOfGenres.Contains(x));
성능이나 명확성면에서 "TakeWhile"이 "Where"보다 나쁩니 까?
아니면 이렇게
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();
참고 URL : https://stackoverflow.com/questions/10667675/linq-where-list-contains-any-in-list
반응형
'Programing' 카테고리의 다른 글
| 외부 라이브러리에 대한 CMake 링크 (0) | 2020.08.09 |
|---|---|
| 초보자가주의해야 할 Ruby Gotchas는 무엇입니까? (0) | 2020.08.09 |
| 여러 양식 필드에 의존하는 Angular2 유효성 검사기 (0) | 2020.08.09 |
| JavaScript를 사용하여 HTML의 CSS 배경색을 설정하는 방법 (0) | 2020.08.09 |
| SQLite 재설정 기본 키 필드 (0) | 2020.08.09 |