2011-09-09 109 views
-1

我有一個在vb.net每個循環的這個特殊的例子還有在列表2項,但在第一個項目之後的退出循環是有錯誤的代碼對於每個循環不跳項目

Public Function findUserID(ByVal list As List(Of KeyValuePair(Of String, String)), ByVal value As String) 
    Dim id As String = String.Empty 
    For Each kvp In list 
     If (kvp.Value = value) Then 
      id = kvp.Key 
     End If 
    Next 
    Return id 
End Function 
+2

你能澄清你的問題,並告訴我們你得到了什麼異常,或者什麼結果回來對你的期望? –

+0

這裏需要提供更多的信息,'kvp.value'包含什麼? –

+0

沒有例外,現在它循環遍歷第一個kvp,然後返回一個空字符串,它不會嘗試檢查第二個值 – user936233

回答

0

嘗試使用此:

dim kvp as KeyValuePair 
kvp = list.Find(p=>p.Value = value)) 
if kvp = null then return "" else return kvp.Key 

一位用戶告訴我要修改它以這樣的方式

dim kvp = list.Find(Function(e) e.Value = value) 
If kvp Is Nothing Then Return "" Else Return kvp.Key 

很抱歉,如果這段代碼有一些錯誤,但我不能嘗試,我平時寫在C#中。
所以我的代碼(C#)是:

KeyValuePair kvp = list.Find(p=>p.Value == value)); 
return kvp == null ? "" : kvp.Key; 
+0

@ user936233:是你還活着?你解決了你的問題嗎? – Marco

+0

我還沒有解決問題,第二個代碼塊運行正常,但沒有返回結果 – user936233

+0

@ user936233:您確定列表中包含的數據是否正確?代碼是正確的,所以如果結果是空的可能應該有一個錯誤之前... – Marco

0

爲什麼你有id變量,並且如果發現有效的話不直接返回Key? 因此,集合將循環遍歷所有KeyValuePairs,並且不會停止任何結果。

Public Function FindUserID(ByVal list As List(Of KeyValuePair(Of String, String)), ByVal value As String) 
    For Each kvp In list 
     If (kvp.Value = value) Then 
      Return kvp.Key 
     End If 
    Next 
End Function 

但那不是錯誤,你調試的方法,並驗證在列表中有多個KeyValuePair?

+0

yes調試器驗證列表中存在多個KeyValuePairs – user936233