Как написать оператор в соответствии с членом класса? - PullRequest
1 голос
/ 17 ноября 2011

Если у меня следующая структура:

Public Class UserData
    Public ID As String
    Public Name As String
End Class

Как мне выбрать его в условном выражении, как это?

Dim myUsers As New System.Collections.Generic.List(Of UserData)

If myUsers.Contains(.ID = "1") = True Then
    ...

Я знаю, что myUsers.Contains(.ID = "1") совершенно неправильно, но мне интересно, как сделать что-то подобное? Является ли это возможным? Это работа для LINQ?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2011

Как насчет этого:

If myUsers.Any(Function(u) u.ID = "1") Then
   ...

Конечно, если вы собираетесь делать это более одного раза, вам, вероятно, будет лучше создать набор для поиска в:

Dim myUserSet = New HashSet(Of String)(myUsers.[Select](Function(u) u.ID))
For Each userId In selectedUserIds
    If myUserSet.Contains(userId) Then
       ...

Мой VB ржавый. Пожалуйста, прости синтаксические ошибки

1 голос
/ 17 ноября 2011

Почему вы не используете словарь

var myUserDict = new Dictionary<String, UserData>
if(myUserDict.ContainsKey("1"))..

Имеет смысл только если вы собираетесь что-то делать с выбранным пользователем.

1 голос
/ 17 ноября 2011

Вот версия VB:

If myUsers.Any(Function(i) i.ID = "1") Then ...
...