如何将其他参数传递给谓词?

时间:2010-08-20 13:18:32

标签: vb.net predicate

我的问题是通过传递特定日期从列表(日历)中找到确切的一个日历对象。我已经了解了谓词,但不确定是否将参数传递给它。

colorcode是List Of(Calendar),日历类有一个名为DtmDate的属性,我想用它来比较并返回所需的对象。

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

我从谷歌那里得到了谓词样本并且到现在为止。但不知道如何将我的参数即日期传递给它。

1 个答案:

答案 0 :(得分:3)

您必须创建自己的谓词。您可以使用lambda并通过“提升”局部变量来对其进行参数化。这是.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具有更具表现力的lambda表达式: