vb.net - 在通用列表中搜索对象

标签 vb.net generics

是否可以通过通用列表中的某个属性来搜索对象?

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/

相关文章:

java - 如何创建继承泛型类的对象

java - 添加到通用集合

java - 带有泛型的 Java 中的可选参数化

mysql - 如何在没有安装 office 的情况下从 winform vb.net 2008 导出到 excel?

vb.net - Delphi 到 Visual basic 转换实用程序

vb.net - Winforms 开发 - 关于如何改进 UI 外观的任何建议

.NET - Queue.Enqueue 方法线程安全吗?

java - JAXB 和包含泛型的集合

c# - 通用接口(interface)的嵌套契约

vb.net - VB.NET 'With' 声明 - 接受还是避免?