public static AlbumViewModel FromObjects(IEnumerable<MetadataDto> objects)
 {
     if (objects.Any())
     {
         var first = objects.First();
         var album = new AlbumViewModel
         {
             Artist = first.AlbumArtist,
             Title = first.Album,
             Year = first.Year,
             Genre = first.Genre,
             Compilation = first.Compilation.HasValue && first.Compilation.Value == 1
         };
         foreach (var discWithTracks in objects.GroupBy(x => x.Disc).OrderBy(x => x.Key))
         {
             var regexMatch = _regex.Match(discWithTracks.First().AccurateRipDiscId ?? string.Empty);
             var disc = new DiscViewModel
             {
                 DiscNumber = Convert.ToInt32(discWithTracks.Key.Split('/')[0]),
                 AccurateRipDiscId = regexMatch.Success ? regexMatch.Groups[1].Captures[0].Value : string.Empty
             };
             foreach (var trackFromDisc in discWithTracks)
             {
                 var track = new TrackViewModel
                 {
                     Id = trackFromDisc.Id,
                     TrackNumber = Convert.ToInt32(trackFromDisc.Track.Split('/')[0]),
                     Artist = trackFromDisc.Artist,
                     Title = trackFromDisc.Title
                 };
                 disc.Tracks.Add(track);
             }
             album.Discs.Add(disc);
         }
         return album;
     }
     else
     {
         return new AlbumViewModel();
     }
 }
 public static AlbumViewModel FromObjects(IEnumerable <MetadataDto> objects)
 {
     if (objects.Any())
     {
         var first = objects.First();
         var album = new AlbumViewModel
         {
             Artist      = first.AlbumArtist,
             Title       = first.Album,
             Year        = first.Year,
             Genre       = first.Genre,
             Compilation = first.Compilation.HasValue && first.Compilation.Value == 1
         };
         foreach (var discWithTracks in objects.GroupBy(x => x.Disc).OrderBy(x => x.Key))
         {
             var regexMatch = _regex.Match(discWithTracks.First().AccurateRipDiscId ?? string.Empty);
             var disc       = new DiscViewModel
             {
                 DiscNumber        = Convert.ToInt32(discWithTracks.Key.Split('/')[0]),
                 AccurateRipDiscId = regexMatch.Success ? regexMatch.Groups[1].Captures[0].Value : string.Empty
             };
             foreach (var trackFromDisc in discWithTracks)
             {
                 var track = new TrackViewModel
                 {
                     Id          = trackFromDisc.Id,
                     TrackNumber = Convert.ToInt32(trackFromDisc.Track.Split('/')[0]),
                     Artist      = trackFromDisc.Artist,
                     Title       = trackFromDisc.Title
                 };
                 disc.Tracks.Add(track);
             }
             album.Discs.Add(disc);
         }
         return(album);
     }
     else
     {
         return(new AlbumViewModel());
     }
 }