private List <ImageItem> FindBestByContent(Bitmap img) { ulong minError = ulong.MaxValue; ulong offset = 100000; byte[,] thumbnail = Processing.CreateThumbnail(img, Db.Images[0].ThumbnailSize); var candidatesList = new List <ImageItem>(); var errorList = new Dictionary <string, ulong>(); foreach (ImageItem item in Db.Images) { ulong error = Processing.CalculateError(item.Thumbnail, thumbnail); errorList.Add(item.Filename, error); if (error < minError) { minError = error; } } foreach (ImageItem item in Db.Images) { if (errorList[item.Filename] < minError + offset) { candidatesList.Add(item); } } return(candidatesList); }