Да, это имеет отношение к предикатам:)
Вы хотите метод Find (Of T) . Вам нужно передать предикат (в данном случае это тип делегата). То, как вы создадите этот делегат, зависит от того, какую версию VB вы используете. Если вы используете VB9, вы можете использовать лямбда-выражение. (Если вы используете VB9, вы можете использовать LINQ вместо Find (Of T), обратите внимание.) Форма лямбда-выражения будет выглядеть примерно так:
list.Find(function(c) c.ID = 1)
Я не уверен, поддерживает ли VB8 анонимные методы так же, как C # 2. Если вам нужно позвонить с VB8, я посмотрю, что я могу придумать. (На самом деле я больше всего C #):