130

linq を使用して、属性のリストが別のリストと一致するアイテムのリストを取得するにはどうすればよいですか?

次の簡単な例と疑似コードを見てみましょう。

List<Genres> listofGenres = new List<Genre>() { "action", "comedy" });   
var movies = _db.Movies.Where(p => p.Genres.Any() in listofGenres);
4

6 に答える 6

229

あなたが望むように聞こえます:

var movies = _db.Movies.Where(p => p.Genres.Intersect(listOfGenres).Any());
于 2012-05-19T18:10:54.437 に答える
69

Containsこれにはクエリを使用できます。

var movies = _db.Movies.Where(p => p.Genres.Any(x => listOfGenres.Contains(x));
于 2012-05-19T18:13:20.723 に答える
1

または、このように

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();
于 2014-08-28T12:22:07.133 に答える