Как именно вы ожидаете, что метод FindIndex
узнает, что делать с тем String
, который вы передаете?Похоже, вы предполагаете, что он будет знать, что он представляет имя и что ему нужно сопоставить элемент по свойству Name
, но как вы думаете, как он это сделает?Как вы думаете, почему он будет соответствовать Name
, а не Address
?
Как говорится в сообщении об ошибке, вам нужно предоставить Predicate
, который является делегатом, который принимает объект типа T
и возвращает Boolean
.В вашем случае T
- это TPerson
, а Boolean
необходимо указать, соответствует ли findname
его свойству Name
.Самый простой способ сделать это с помощью лямбда-выражения:
Dim index = Group.FindIndex(Function(person) person.Name = findname)
Вы можете сделать это с именованным методом и делегатом, если хотите, но это будет более затянуто, и это будет означать получениеfindname
значение в некотором запутанном виде.Если вы прочитаете документацию по методу FindIndex
(что вы должны были сделать перед публикацией здесь), вы можете найти пример такого рода вещи.