0

我非常喜欢 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 不是委托并且不会编译 - 任何想法如何解决这个问题?

4

2 回答 2

2

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
于 2012-11-08T11:46:46.900 回答
0

List(of string).IndexOf方法将字符串作为输入。

该函数Function (adr) Trim(UCase(adr)) LIKE "A"是一个委托,而不是一个字符串,因此您不能将它与 IndexOf 方法一起使用。

如果您想执行忽略大小写的搜索,那么以下 LINQ 查询可能适合您。

Test.First(Function (adr) adr.Equals("A", StringComparison.OrdinalIgnoreCase))
于 2012-11-08T11:42:44.263 回答