Как искать часть объекта в списке массивов без метода зацикливания - PullRequest
0 голосов
/ 10 февраля 2012

Я сохраняю данные клиента в списке массивов.Как найти часть данных (currentIP) в списке массивов (clientList) быстрым методом?

Код выглядит следующим образом:

' Array list to keep Clients Object
Protected Friend clientList As ArrayList = ArrayList.Synchronized(New ArrayList())

Public Class Clients
    public clientIPAdrress As IPAddress
    public clientTCP As TcpClient
    public clientStream As SslStream
End Class


Public Sub Test()

  ' Create objClients Object from Clients Class
  Dim objClients as new Clients 

  ' Add objClients to Array List  
  clientList.Add(objClients)

  Dim currentIP as IPAdress = IPAddress.Parse("192.168.1.2")
  Dim isIPFound as Boolean = False

  ' Search currentIP inside clientList with looping method
  For Each ip As Clients In clientList                                                                              
     If ip.ClientIPAdrress = currentIP Then
        isIPFound = True
        Exit For
     End If
  Next

End Sub

Спасибо за совет.

1 Ответ

1 голос
/ 10 февраля 2012

Вместо этого вы должны набрать List(Of Clients), тогда вы можете использовать LINQ:

Dim clientList As New List(Of Clients)
clientList.Add(new Clients())
Dim isIPFound=clientList.Any(Function(ip) ip.ClientIPAdrress = currentIP)

Но по сути это то же самое, что и ваш цикл только в одном ряду.

Если вам нужно найти самый быстрый способ, вы можете отсортировать свой список и BinarySearch IP с помощью специального компаратора. Или, если IP-адрес является уникальным в списке, вместо него можно использовать Dictionary(Of IPAdress,Clients).

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