Мне кажется, что с тобой все будет в порядке:
Dictionary<string, int> other = ...;
HashSet<string> blacklist = ...;
var dictionary = other.Where(item => item.Value > 0 &&
!blackList.Contains(item.Key)
.ToDictionary(item => item.Key, item => item.Value);
Насколько я понимаю, вообще не нужен отдельный тип - производные от Dictionary<,>
или List<>
почтивсегда плохая идея ИМО.