Recherche d'Objet dans la Liste Générique
Est-il possible de rechercher un objet par une de ses propriétés dans une Liste Générique?
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
Puis le chargement et la recherche
Dim list as new list(Of Customer)
list.Add(New Customer(1,"A")
list.Add(New Customer(2,"B")
Comment puis-je retourner client de l'objet avec l'id =1? Est-ce que avez à faire avec le "Prédicat" dans les Génériques?
Note: je suis en train de faire dans ce VB.NET.
OriginalL'auteur Saif Khan | 2008-10-14
Vous devez vous connecter pour publier un commentaire.
Oui, cela a tout à voir avec des prédicats 🙂
Vous voulez le Trouver(T) méthode. Vous devez passer dans un prédicat (ce qui est un type de délégué dans ce cas). Comment vous construire que délégué dépend de la version de VB que vous utilisez. Si vous utilisez VB9, vous pouvez utiliser une expression lambda. (Si vous utilisez VB9 vous pouvez utiliser LINQ au lieu de Trouver(T) en premier lieu, vous l'esprit.) L'expression lambda forme serait quelque chose comme:
Je ne suis pas sûr si VB8 prend en charge les méthodes anonymes de la même manière que le C# 2 fait. Si vous avez besoin d'appeler cela de VB8, je vais voir ce que je peux trouver. (Je suis de plus en plus en C# d'un personne vraiment 🙂
Si vous utilisez VB9 mais limité .NET 2.0, vous voudrez peut-être regarder à LINQBridge: albahari.com/nutshell/linqbridge.aspx en gros, C'est une LINQ to Objects mise en œuvre de ciblage .NET 2.0.
merci pour ce one-liner fonction de prédicat exemple.
OriginalL'auteur Jon Skeet
Généralement vous avez besoin d'utiliser des prédicats:
Ou avec inline méthodes:
OriginalL'auteur Ozgur Ozcitak
Vous pouvez aussi surcharger la méthode equals puis effectuez l'une contient. comme ce
la méthode equals alors ressembler à ceci
Pas encore testé mais il devrait être assez proche.
OriginalL'auteur chrissie1
Si vous êtes en utilisant .NET 3.5, ce qui peut être fait avec LINQ Objets:
Comment faire: demander une liste de tableaux avec LINQ
Si non, dans .NET 2.0, vous pouvez utiliser le
Trouver
de la méthode de la liste.L'idée est que vous devrez fournir une méthode qui retourne true si une propriété de l'objet répond à une certaine condition.
OriginalL'auteur Aleris