是否可以通过通用列表中的某个属性来搜索对象?
Public Class Customer
Private _id As Integer
Private _name As String
Public Property ID() As Integer
Get
Return _id
End Get
Set
_id = value
End Set
End Property
Public Property Name() As String
Get
Return _name
End Get
Set
_name = value
End Set
End Property
Public Sub New(id As Integer, name As String)
_id = id
_name = name
End Sub
End Class
然后加载并搜索
Dim list as new list(Of Customer)
list.Add(New Customer(1,"A")
list.Add(New Customer(2,"B")
如何返回 id =1 的客户对象?这与泛型中的“谓词”有关吗?
注意:我在 VB.NET 中执行此操作。
最佳答案
是的,这与谓词有关:)
您想要 Find(Of T)方法。您需要传入一个谓词(在本例中是一种委托(delegate)类型)。如何构造该委托(delegate)取决于您使用的 VB 版本。如果您使用 VB9,则可以使用 lambda 表达式。 (请注意,如果您使用的是 VB9,您可能首先需要使用 LINQ 而不是 Find(Of T)。)lambda 表达式的形式类似于:
list.Find(function(c) c.ID = 1)
我不确定 VB8 是否像 C# 2 一样支持匿名方法。如果您需要从 VB8 调用它,我会看看我能想出什么。 (我确实更喜欢 C# :)
关于vb.net - 在通用列表中搜索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/200151/