private IList <PreconstructedDeckViewModel> LoadReferentialData() { List <PreconstructedDeckViewModel> ret = new List <PreconstructedDeckViewModel>(); IDictionary <int, CardViewModel> allCardsViewModel = _magicDatabase.GetAllInfos().ToDictionary(cai => cai.IdGatherer, cai => new CardViewModel(cai)); foreach (IPreconstructedDeck preconstructedDeck in _magicDatabase.GetAllPreconstructedDecks()) { ICollection <IPreconstructedDeckCardEdition> deckComposition = _magicDatabase.GetPreconstructedDeckCards(preconstructedDeck); IEdition edition = _magicDatabase.GetEditionById(preconstructedDeck.IdEdition); ret.Add(new PreconstructedDeckViewModel(preconstructedDeck, edition, deckComposition.Select(pdce => new KeyValuePair <CardViewModel, int>(allCardsViewModel[pdce.IdGatherer], pdce.Number)))); } ret.Sort((x, y) => { //Most recent set first if (!x.EditionDate.HasValue) { return(y.EditionDate.HasValue ? 1 : 0); } if (!y.EditionDate.HasValue) { return(-1); } int comp = y.EditionDate.Value.CompareTo(x.EditionDate.Value); if (comp == 0) { //Alphabet order comp = x.Name.CompareTo(y.Name); } return(comp); }); return(ret.AsReadOnly()); }