private bool ProcessGoodFiles() { ColorsLeftAfterFirstGood = 0; ColorsLeftAfterLastGood = 0; try { foreach (FileData snap in GoodSnaps) { if (SelectedColorsSoFar.Count == 0) { if (!ProcessFirstGoodFile(snap)) { return(false); } ColorsLeftAfterFirstGood = SelectedColorsSoFar.Count(); } else if (!ProcessNextGoodFile(snap)) { Debug.WriteLine("The file {0} finished to kill its category {1}", snap.FileName, Label); KilledBy = snap.FileName; return(false); } } return(SelectedColorsSoFar.Count > 0); } finally { ColorsLeftAfterLastGood = SelectedColorsSoFar.Count; Debug.WriteLine("Processing {0} good files on {1} => Colors dropped from {2} down to {3}", GoodSnaps.Count, Label, ColorsLeftAfterFirstGood, ColorsLeftAfterLastGood); } }
private bool ProcessBadFile(FileData data) { foreach (int color in data.OwnStats.Keys) { if (SelectedColorsSoFar.ContainsKey(color)) { SelectedColorsSoFar.Remove(color); } } //SelectedColorsSoFar.Remove(color); return(SelectedColorsSoFar.Count > 0); }
private bool ProcessNextGoodFile(FileData data) { SelectedColorsSoFar = SelectedColorsSoFar.Where(kvp => data.OwnStats.ContainsKey(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value + data.OwnStats[kvp.Key]); return(SelectedColorsSoFar.Count > 0); }