VB2005 Поиск / поиск в списке структуры

#vb.net #visual-studio-2005 #find #generic-list

#vb.net #visual-studio-2005 #Найти #общий список

Вопрос:

VB2005: я несколько часов искал хороший пример, и я нашел некоторые, но, к сожалению, они для VB2008 . В настоящее время я работаю в VB2005, поэтому кажется, что это было сложнее сделать в этом выпуске.

У меня есть класс для точки

 Public Class cPoint
    Public Speed As Integer
    Public Alt As Integer
    Public Status As String = ""
    Public Err As String = ""
End Class
  

Я заполняю список точек с помощью MyPoints=List(из CPoint). Теперь все, что мне нужно сделать, это найти первое совпадение с заданной скоростью и alt. Я пытался

 Dim p As cPoint = MyPoints.Find(Function(item As cPoint) item.Speed = 85)
  

Но это не работает в VB2005, а тем более не работает с более чем 1 фильтром. Кажется, я просто не могу найти хороший пример, который работает в VB2005. Я мог бы перебирать список, но он большой и не очень эффективный. Любые советы о том, как я могу это сделать в VB2005?

~ agp

Ответ №1:

VB.Net В 2005 отсутствует поддержка lambda, поэтому такой стиль запроса не будет работать. Самая простая версия, которая будет выполняться, — это ручная итерация с For Each циклом.

 My p As cPoint = Nothing
For Each item in MyPoints 
  If item.Speed = 85 Then
    p = item
    Exit For 
  End If
Next
  

Комментарии:

1. Да, и я пробовал это, но мой список довольно большой, и мне приходится нажимать на него много раз. должен быть лучший способ. Я смотрю на некоторые образцы, но не могу понять, как это сделать правильно, кроме итерации.

2. @sinDizzy это решение такое же быстрое, как и в вашем сообщении. Под капотом используется та же базовая логика.

3. действительно? думал, я читал, что использование анонимных делегатов было значительно быстрее. Пока я буду придерживаться цикла, если не найду лучший способ. Спасибо.

4. @sinDizzy это может быть быстрее в определенных ситуациях с микро-тестированием и, возможно, в некоторых приложениях реального мира. Вам нужно будет профилировать свое отдельное приложение, чтобы увидеть, было ли это фактором здесь. Хотя я бы серьезно в этом сомневался.

5. Я запустил приложение, и у меня было не так много поисковых запросов, как я думал, поэтому на самом деле оно работало довольно быстро. большое спасибо за информацию и советы.