对于每个循环不跳过项目

时间:2011-09-09 06:23:55

标签: vb.net for-loop foreach

对于这个特定的例子,我在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 :(得分: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

但那不是错误,您是否调试了方法并验证了列表中有多个KeyValuePairs?

答案 1 :(得分: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;