public List<Subtitle> OrderSubtitles(IEnumerable<Subtitle> subtitleCollection, IEnumerable<string> preferredLanguages) { if (subtitleCollection == null) return null; var currentIndexCounter = new Dictionary<string, int>(); var subs = new List<OrderedSubtitle>(); foreach (var subtitle in subtitleCollection) { var key = subtitle.FromProvider + subtitle.Langugage; var doesContain = currentIndexCounter.ContainsKey(key); if (doesContain) { var currentIndex = currentIndexCounter[key]; var newIndex = currentIndex + 1; subs.Add(new OrderedSubtitle(newIndex, subtitle)); currentIndexCounter[key] = newIndex; continue; } var orderedSubtitle = new OrderedSubtitle(0, subtitle); currentIndexCounter.Add(key, 0); subs.Add(orderedSubtitle); } return (from language in preferredLanguages from ordSubtitle in subs where ordSubtitle.Subtitle.Langugage == language orderby ordSubtitle.Index select ordSubtitle.Subtitle).ToList(); }
public List <Subtitle> OrderSubtitles(IEnumerable <Subtitle> subtitleCollection, IEnumerable <string> preferredLanguages) { if (subtitleCollection == null) { return(null); } var currentIndexCounter = new Dictionary <string, int>(); var subs = new List <OrderedSubtitle>(); foreach (var subtitle in subtitleCollection) { var key = subtitle.FromProvider + subtitle.Langugage; var doesContain = currentIndexCounter.ContainsKey(key); if (doesContain) { var currentIndex = currentIndexCounter[key]; var newIndex = currentIndex + 1; subs.Add(new OrderedSubtitle(newIndex, subtitle)); currentIndexCounter[key] = newIndex; continue; } var orderedSubtitle = new OrderedSubtitle(0, subtitle); currentIndexCounter.Add(key, 0); subs.Add(orderedSubtitle); } return((from language in preferredLanguages from ordSubtitle in subs where ordSubtitle.Subtitle.Langugage == language orderby ordSubtitle.Index select ordSubtitle.Subtitle).ToList()); }