public void OnSelectedTargetChanged() { Supercedances.ClearEx(); if (SelectedTarget != null) { // maps DLC folder name -> mount number var mountpriorities = MEDirectories.GetMountPriorities(SelectedTarget); //maps filename to list of DLC in order of precedence var supercedances = MEDirectories.GetFileSupercedances(SelectedTarget).Where(x => x.Value.Count > 1).ToList(); foreach (var supercedance in supercedances) { SupercedanceList sl = new SupercedanceList() { Filename = supercedance.Key, WinningFile = new SupercedanceFile() { DLCName = supercedance.Value.First(), MountPriority = mountpriorities[supercedance.Value.First()], Game = SelectedTarget.Game }, Game = SelectedTarget.Game }; sl.LosingFiles.ReplaceAll(supercedance.Value.Skip(1).Take(supercedance.Value.Count - 1).Select(x => new SupercedanceFile() { DLCName = x, MountPriority = mountpriorities[x], Game = SelectedTarget.Game })); Supercedances.Add(sl); //var dlcname = supercedance.Value //SupercedanceFile winningFile = new SupercedanceFile() //{ // Fi // MountPriority = mountpriorities[], // DLCName = supercedance.Value.First() //}; } } Supercedances.Sort(x => x.Filename); }