Я не понял, как вы хотите отсортировать по жанрам, если они содержатся в фильмах, может быть, вы хотите отфильтровать по жанру, а затем отсортировать по названию?
class Movie
{
public string Title { get; set; }
public string[] Genres { get; set; }
}
static void Main(string[] args)
{
var movies = new List<Movie>();
movies.Add(new Movie { Title = "Pulp Fiction", Genres = new string[] { "Crime", "Thriller" } });
movies.Add(new Movie { Title = "Back to the Future", Genres = new string[] { "Adventure", "Sci-Fi" } });
movies.Add(new Movie { Title = "The Dark Knight", Genres = new string[] { "Action", "Crime" } });
var byTitle = from m in movies orderby m.Title select m;
var crimeMovies = from m in movies where m.Genres.Contains("Crime") orderby m.Title select m;
}
РЕДАКТИРОВАТЬ: Выбор фильмов с жанром и упорядочение по жанру, а затем название (в соответствии с комментарием):
var distinctGenres = from m in movies
from genre in m.Genres
group genre by genre into genres
select genres.First();
var moviesWithGenre = from g in distinctGenres
from m in movies
where m.Genres.Contains(g)
orderby g, m.Title
select new { Genre = g, Movie = m };
foreach (var m in moviesWithGenre)
{
Console.WriteLine("Genre: "+ m.Genre + " - " + m.Movie.Title);
}
Выход:
Genre: Action - The Dark Knight
Genre: Adventure - Back to the Future
Genre: Crime - Pulp Fiction
Genre: Crime - The Dark Knight
Genre: Sci-Fi - Back to the Future
Genre: Thriller - Pulp Fiction