2008-12-12 25 views
1

一些非常基本的東西似乎逃避我。用linq過濾IDictionary(的TK,電視)到一個IDictionary(的TK,電視)

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

我希望得到一個IDictiorany(字符串,字符串)回來了,只是有一個非空值的元素。我認爲這會做到這一點:

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

但這最終是錯誤的類型。加:

.ToDictionary(Function(x) x.Key) 

也沒有任何幫助。有小費嗎?

回答

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) 
+0

您是否在同一範圍內創建和過濾字典?如果你是這樣,你可以使用匿名類型來創建,這使得過濾變得更清晰。 – 2008-12-12 15:14:22