grains.select{|g| g.is_a?(Salt) && g.value.blank? }.sort{|a,b| a.irrelevance <=> b.irrelevance }.first
grains.select{|g| g.is_a?(Salt) && g.value.nil? }.sort_by(&:irrelevance).first
sort_by{|g|g.irrelevance}
$ ruby -e 'puts VERSION; p ["10", "2", "3"].sort_by(&:to_i)' 1.8.7 ["2", "3", "10"]
EDIT: said duck typing first. It's too early for thinking.
foreach (var g in grains) {
if (g.TypeOf() == "Salt" && g.Value == nothing) saltGrains.Add(g);
saltGrains.sort(m => m.Value.irellevance);
return saltGrains.First();
or something.