public CommanderViewModel(string commanderName, List <string> logs, Languages languages) { CommanderName = commanderName; var entryDatas = JsonConvert.DeserializeObject <List <EntryData> >(IOUtils.GetEntryDatasJson()); var converter = new ItemNameConverter(entryDatas); State = new State(entryDatas, languages); journalEntryConverter = new JournalEntryConverter(converter, State.Cargo, languages); blueprintConverter = new BlueprintConverter(State.Cargo); LoadBlueprints(); languages.PropertyChanged += (o, e) => OnPropertyChanged(nameof(Filters)); LoadState(logs); var datas = State.Cargo.Select(c => c.Value.Data); var ingredientUsed = Blueprints.SelectMany(blueprint => blueprint.Ingredients); var ingredientUsedNames = ingredientUsed.Select(ingredient => ingredient.Entry.Data.Name).Distinct(); var unusedIngredients = datas.Where(data => !ingredientUsedNames.Contains(data.Name)); foreach (var data in unusedIngredients) { data.Unused = true; } }