Vb.net 对于每个循环,不跳过项目

Vb.net 对于每个循环,不跳过项目,vb.net,for-loop,foreach,Vb.net,For Loop,Foreach,在vb.net中,我有一个for-each循环。对于这个特定的示例,列表中有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.V

在vb.net中,我有一个for-each循环。对于这个特定的示例,列表中有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

为什么您有id变量,并且如果您找到了有效的,那么不直接返回密钥? 因此,集合将在所有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?

尝试使用以下方法:

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;

您能否澄清您的问题,并告诉我们您遇到了什么异常,或者返回的结果与您预期的结果相比是什么?需要在此处提供更多信息,什么是
kvp.value
包括?没有异常,现在它循环通过第一个kvp,然后返回一个空字符串,它没有尝试检查第二个值是的,调试器验证了列表中有多个KeyValuePairs。我没有解决问题,第二个代码块运行正常,但没有返回result@user936233:您真的确定列表中包含的数据正确吗?代码是正确的,所以如果结果是空的,那么之前可能会有一个错误…结果列表中的数据包含额外的空格,我想因为只有两个结果,代码可以同时计算这两个结果,而无需再次通过for each循环。此代码更好,而且似乎更有效,谢谢您的帮助