【发布时间】:2011-06-07 10:40:09
【问题描述】:
我有一个 myList 列表 MyObjects。是否可以根据 VB.NET 中myObject 的属性检查myList 是否包含特定的myObject?在 C# 中,你会得到类似的东西:
myList.Exists(myObject => myObject.property1 == 3)
【问题讨论】:
我有一个 myList 列表 MyObjects。是否可以根据 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
【讨论】:
FirstOrDefault。我建议你用它来开始 - 找到它然后再寻找是没有意义的。
MyObject 是一个类,那么无论如何您都将更新列表元素所引用的对象。了解引用类型在 .NET 中的工作原理真的很重要。见pobox.com/~skeet/csharp/references.html
大致相同,只是 VB.NET 对 lambda 表达式有不同的语法:
myList.Exists(Function(myObject) myObject.property1 = 3)
【讨论】: