我有一个 MyObjects
的列表myList
。在VB.NET中,是否可以根据myObject
的属性检查myList
是否包含特定的myObject
? 在C#中,你会这样做:
myList.Exists(myObject => myObject.property1 == 3)
我相信你也可以在VB.NET中使用myList.Exists
,只需使用其lambda表达式语法。
然而,更通用的方法是使用带谓词的Any
LINQ运算符。例如:
myList.Any(Function(myObject) myObject.property1 = 3)
个人而言,我更喜欢使用LINQ运算符,除非某些原因使得更具体的List<T>
方法提供了显著优势。
编辑:
如果您需要之后访问对象,只需使用:
Dim foo = myList.FirstOrDefault(Function(myObject) myObject.property1 = 3)
If (foo Is Not Nothing) Then
...
End If
大致相同,但VB.NET对于lambda表达式有不同的语法:
myList.Exists(Function(myObject) myObject.property1 = 3)
FirstOrDefault
。我建议您从那里开始 - 找到它,然后再次查找是没有意义的。 - Jon SkeetMyObject
是一个类,你将会更新列表元素所引用的对象。在.NET中,理解引用类型的工作原理非常重要。请参阅http://pobox.com/~skeet/csharp/references.html - Jon Skeet