是否可以通过通用列表中的某个属性搜索对象?
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)方法.您需要传入一个谓词(在这种情况下是一种委托).如何构造该委托取决于您使用的VB版本.如果您使用的是VB9,则可以使用lambda表达式.(如果你正在使用VB9,你可能首先想要使用LINQ而不是Find(Of T),请注意.)lambda表达式形式如下:
list.Find(function(c) c.ID = 1)
我不确定VB8是否支持匿名方法,就像C#2一样.如果你需要从VB8调用它,我会看到我能想到的.(我真的更像是一个C#人:)
通常,您需要使用谓词:
list.Add(New Customer(1, "A")) list.Add(New Customer(2, "B")) Private Function HasID1(ByVal c As Customer) As Boolean Return (c.ID = 1) End Function Dim customerWithID1 As Customer = list.Find(AddressOf HasID1)
或者使用内联方法:
Dim customerWithID1 As Customer = list.Find(Function(p) p.ID = 1)