#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. Я запустил приложение, и у меня было не так много поисковых запросов, как я думал, поэтому на самом деле оно работало довольно быстро. большое спасибо за информацию и советы.