Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB2005在结构列表中查找/搜索_Vb.net_Visual Studio 2005_Find_Generic List - Fatal编程技术网

Vb.net VB2005在结构列表中查找/搜索

Vb.net VB2005在结构列表中查找/搜索,vb.net,visual-studio-2005,find,generic-list,Vb.net,Visual Studio 2005,Find,Generic List,VB2005:我花了几个小时寻找一个好的例子,我找到了一些,但不幸的是,它们是针对VB2008+的。我目前在VB2005中工作,所以在那个版本中似乎很难做到这一点 我有一门课要讲一点 Public Class cPoint Public Speed As Integer Public Alt As Integer Public Status As String = "" Public Err As String = "" End Class 我使用MyPoint

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的)填充点列表。现在我需要做的就是找到第一个匹配的速度和高度。我试过了

Dim p As cPoint = MyPoints.Find(Function(item As cPoint) item.Speed = 85)
但这在VB2005中不起作用,更不用说使用一个以上的过滤器了。我似乎找不到一个适用于VB2005的好例子。我可以反复浏览这个列表,但它有点大,效率不高。关于如何在VB2005中做到这一点,有什么建议吗


~agp

VB.Net 2005缺少lambda支持,因此这种查询方式不起作用。最简单的版本是对每个循环使用
进行手动迭代

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

是的,我也试过了,但我的单子有点大,我不得不打很多次。一定有更好的办法。我正在查看一些示例,但除了迭代之外,我还不能完全了解如何正确地完成它。@Sindizy这个解决方案与您文章中的解决方案一样快。在引擎盖下使用相同的基本逻辑。真的吗?我想我已经读到,使用匿名代理要快得多。除非我能找到更好的方法,否则我现在就要坚持这个循环。谢谢。@Sindizy,在某些微基准测试情况下,它可能会更快,在一些实际应用程序中也可能更快。你必须分析你的个人应用程序,看看它是否是一个因素。虽然我很怀疑,但我运行了这个应用程序,没有我想象的那么多的查询,所以它实际上运行得很快。非常感谢您的信息和建议。