Для каждого цикла не пропускаются элементы - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть для каждого цикла в 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 голосов
/ 09 сентября 2011

Попробуйте использовать это:

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 голосов
/ 09 сентября 2011

Почему у вас есть переменная 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...