FilterByPredicate(hash,x=>x.ForeignBookId,localHash,profile,(x,p)=>!p.SkipMissingDate||x.ReleaseDate.HasValue,"release date is missing");
FilterByPredicate(hash,x=>x.ForeignBookId,localHash,profile,(x,p)=>!p.SkipPartsAndSets||!IsPartOrSet(x,seriesLinks.GetValueOrDefault(x),titles),"book is part of set");
FilterByPredicate(hash,x=>x.ForeignBookId,localHash,profile,(x,p)=>!p.SkipSeriesSecondary||!seriesLinks.ContainsKey(x)||seriesLinks[x].Any(y=>y.IsPrimary),"book is a secondary series item");
FilterByPredicate(hash,x=>x.ForeignEditionId,localHash,profile,(x,p)=>!allowedLanguages.Any()||allowedLanguages.Contains(x.Language?.CanonicalizeLanguage()),"edition language not allowed");
FilterByPredicate(hash,x=>x.ForeignEditionId,localHash,profile,(x,p)=>!p.SkipMissingIsbn||x.Isbn13.IsNotNullOrWhiteSpace()||x.Asin.IsNotNullOrWhiteSpace(),"isbn and asin is missing");