Существует функция ToArray () для значений:
Foo[] arr = new Foo[dict.Count];
dict.Values.CopyTo(arr, 0);
Но я не думаю, что это эффективно (на самом деле я не пробовал, но, думаю, он копирует все эти значения в массив). Вам действительно нужен массив? Если нет, я бы попытался передать IEnumerable:
IEnumerable<Foo> foos = dict.Values;