使用linq将字典(Of,TV)过滤为IDictionary(Of TO,TV)

时间:2008-12-12 15:02:42

标签: vb.net linq-to-objects

一些非常基本的东西似乎在逃避我。

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)

也没有任何帮助。有什么提示吗?

1 个答案:

答案 0 :(得分:2)

啊......回答了我自己的问题。如果它对其他人有用,请留下这个。

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)