public void SetValues(List<string> fileInfoList)
 {
     _isMulti = true;
     _id3MultiEditHelp = Id3Handler.GetTagsAndIntersectionFields(fileInfoList);
     SetValues();
 }
        /// <summary>
        /// Returns the tags and the intersection of multiple files
        /// </summary>
        /// <param name="fileInfos">List of the fileinfos</param>
        /// <returns>The multi edit help tags</returns>
        public static Id3MultiEditHelp GetTagsAndIntersectionFields(List<string> fileInfos)
        {
            var id3MultiEditHelp = new Id3MultiEditHelp();
            const string multiValues = "(multiple Values)";
            foreach (var fileInfo in fileInfos)
            {
                var file = File.Create(fileInfo);
                var tag = file.TagTypes != TagTypes.Id3v2 ? file.Tag : file.GetTag(TagTypes.Id3v2);
                id3MultiEditHelp.TagList.Add(fileInfo, tag);
            }
            var performers =
                id3MultiEditHelp.TagList.Values.SelectMany(tag => tag.Performers)
                    .ToList()
                    .GroupBy(x => x)
                    .Select(g => new KeyValuePair<int, string>(g.Count(), g.Key))
                    .ToList();
            var albums =
                id3MultiEditHelp.TagList.Values.GroupBy(i => i.Album)
                    .Select(g => new KeyValuePair<int, string>(g.Count(), g.First().Album))
                    .ToList();
            var years =
                id3MultiEditHelp.TagList.Values.GroupBy(i => i.Year)
                    .Select(g => new KeyValuePair<int, uint?>(g.Count(), g.First().Year))
                    .ToList();
            var genres =
                id3MultiEditHelp.TagList.Values.GroupBy(i => i.JoinedGenres)
                    .Select(g => new KeyValuePair<int, string>(g.Count(), g.First().JoinedGenres))
                    .ToList();
            var comments =
                id3MultiEditHelp.TagList.Values.GroupBy(i => i.Comment)
                    .Select(g => new KeyValuePair<int, string>(g.Count(), g.First().Comment))
                    .ToList();
            var stars =
                id3MultiEditHelp.TagList.Values.GroupBy(i => i.GetPopularimeterFrame()?.Rating.ToStars())
                    .Select(
                        g =>
                            new KeyValuePair<int, Stars?>(g.Count(), g.First().GetPopularimeterFrame()?.Rating.ToStars()))
                    .ToList();

            id3MultiEditHelp.Performers =
                performers.Count == 0
                    ? new List<Performer> { new Performer(multiValues) }
                    : performers.Max(k => k.Key) == fileInfos.Count
                        ? (from y in performers where y.Key.Equals(fileInfos.Count) select new Performer(y.Value))
                        .ToList()
                        : new List<Performer> { new Performer(multiValues) };
            id3MultiEditHelp.Albums =
                albums.Count == 0
                    ? new[] { multiValues }
                    : albums.Max(k => k.Key) == fileInfos.Count
                        ? (from y in albums where y.Key.Equals(fileInfos.Count) select y.Value).ToArray()
                        : new[] { multiValues };
            id3MultiEditHelp.Genres =
                genres.Count == 0
                    ? new string[0]
                    : genres.Max(k => k.Key) == fileInfos.Count
                        ? (from y in genres where y.Key.Equals(fileInfos.Count) select y.Value).ToArray()
                        : new string[0];
            id3MultiEditHelp.Rating = stars.First(y => y.Key.Equals(fileInfos.Count)).Value;
            id3MultiEditHelp.Year = years.FirstOrDefault(y => y.Key.Equals(fileInfos.Count)).Value;
            id3MultiEditHelp.Comment = comments.FirstOrDefault(x => x.Key == fileInfos.Count).Value ?? multiValues;

            return id3MultiEditHelp;
        }