我非常喜欢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不是委托,也不会编译 - 任何想法如何解决这个问题?
答案 0 :(得分:2)
List.IndexOf
获取T
并返回该对象的索引。所以你不能在这里传递一个谓词。我假设您希望地址的第一个索引等于 - 忽略 - 大小写“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
答案 1 :(得分:0)
List(of string).IndexOf方法将字符串作为输入。
函数Function (adr) Trim(UCase(adr)) LIKE "A"
是委托,而不是字符串,因此您不能将它与IndexOf方法一起使用。
如果你想执行一个忽略大小写的搜索,那么下面的LINQ查询可能会对你有用。
Test.First(Function (adr) adr.Equals("A", StringComparison.OrdinalIgnoreCase))