Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Complicated group by

I have a homework, where we are given IEnumerable<Movie> where Movie contains HashSet<string> genres (list of genres represented by string like "Comedy", "Drama" etc.).

How to use LINQ and group by to sort movies by genre? (create IGrouping<string, IEnumerable<Movie>>)

like image 355
Haf_SK Avatar asked May 27 '26 14:05

Haf_SK


1 Answers

It sounds like you want to flatten out the movies into move/genre pairs first, then group:

var grouped = from movie in movies
              from genre in movie.Genres
              group movie by genre;

Or avoiding query expressions:

var grouped = movies.SelectMany(movie => move.Genres,
                                (movie, genre) => new { movie, genre })
                    .GroupBy(pair => pair.genre, pair => pair.movie);
like image 71
Jon Skeet Avatar answered May 30 '26 04:05

Jon Skeet