Фильтр IDictionary (Of TK, TV) для IDictionary (Of TK, TV) с помощью linq

Кажется, что-то ускользает от меня.

Dim foo As New Dictionary(Of String, String)
foo.Add("key", Nothing)
foo.Add("key2", "something")

Я хочу вернуть IDictiorany (Of String, String), только с элементами, которые имеют непустое значение. Я думал, что это сделает это:

foo.Where(Function(x) Not String.IsNullOrEmpty(x.Value))

Но в конечном итоге это не тот тип. Добавление:

.ToDictionary(Function(x) x.Key)

Никому тоже не помогает. Какие-нибудь советы?

12.12.2008 15:02:42
1 ОТВЕТ
РЕШЕНИЕ

Ах ... Ответил на мой собственный вопрос. Оставим это на всякий случай, если это будет кому-то полезно.

Dim foo As Dictionary(Of String, String)
foo.Add("k1", Nothing)
foo.Add("k2", "something")

Dim IDictionary(Of String, String) res = foo _
    .Where(Function(x) Not String.IsNullOrEmpty(x.Value)) _
    .ToDictionary(Function(x) x.Key, Function(y) y.Value)
2
16.12.2008 15:17:37
Вы создаете и фильтруете словарь в той же области? Если да, вы можете использовать анонимный тип для создания, что делает фильтрацию и превращение его в словарь намного чище.
Daniel Schaffer 12.12.2008 15:14:22