2010-08-20 3 views
2

Моя проблема заключается в том, чтобы найти точный один объект Calendar из списка (Календарь), передав конкретную дату. Я узнал о предикате, но не уверен, что передал ему параметр.Как передать дополнительные параметры для предиката?

colorcode is List (Календарь), а класс calendar имеет свойство DtmDate, с которым я хочу сравнить и вернуть желаемый объект.

Dim a As Calendar = colourcode.Find(AddressOf New Calendar.FindByDate) 

Я получил образцы предикатов от Google и дошел до сих пор. Но не уверен, как передать мой параметр, то есть дату.

ответ

3

Вам нужно будет создать свой собственный предикат. Вы можете сделать это с помощью лямбды и «поднять» локальные переменные в нее, вы можете параметризовать ее. Вот несколько глупый пример для .NET 3.5/Visual Studio 2008:

Dim lookFor As String = "e" 
Dim predicate = Function(s as String) s.Contains(lookFor) 

Dim list As New List(Of String) 
list.Add("alfa") 
list.Add("beta") 
list.Add("gamma") 
list.Add("delta") 
Dim foundString As String = list.Find(predicate) 

Обратите внимание, как вы можете изменить значение lookFor для поиска других строк.

В .NET 4/Visual Studio 2010 Visual Basic имеет более выразительный лямбда-выражений:

+0

Спасибо! Я получил еще одно решение здесь http://gist.github.com/295062 – Antoops

Смежные вопросы