我非常喜欢 Lambdas,但我对这个表达式确实有问题:
Dim Test as New List/of String)
Test.add("A")
Test.add("B")
Dim Adress=Test.Indexof(Function (adr) (Trim(Ucase(Adr)) LIke "A")
编译器警告说,Stirng 不是委托并且不会编译 - 任何想法如何解决这个问题?
List.IndexOf
接受 aT
并返回该对象的索引。所以你不能在这里传递谓词。我假设您想要等于忽略大小写“A”的地址的第一个索引。然后你可以使用Linq:
Dim matches = Test.Select(Function(Address, Index) New With {Address, Index}).
Where(Function(x) x.Address.ToUpper = "A")
If matches.Any() Then
Dim firstMatch = matches.First()
Dim firstMatchIndex As Int32 = firstMatch.Index ' 0
Dim firstMatchAddress As String = firstMatch.Address ' "A"
End If
List(of string).IndexOf方法将字符串作为输入。
该函数Function (adr) Trim(UCase(adr)) LIKE "A"
是一个委托,而不是一个字符串,因此您不能将它与 IndexOf 方法一起使用。
如果您想执行忽略大小写的搜索,那么以下 LINQ 查询可能适合您。
Test.First(Function (adr) adr.Equals("A", StringComparison.OrdinalIgnoreCase))