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

Vb.net 如何将其他参数传递给谓词?,vb.net,predicate,Vb.net,Predicate,我的问题是通过传递一个特定的日期,从(日历)列表中找到确切的一个日历对象。我了解了谓词,但不确定是否将参数传递给它 colorcode是(Calendar)的列表,Calendar类有一个名为DtmDate的属性,我想与该属性进行比较并返回所需的对象 Dim a As Calendar = colourcode.Find(AddressOf New Calendar.FindByDate) 我从谷歌那里得到了谓词样本,并且一直到现在。但不确定如何将我的参数(即日期)传递给它。您必须创建自己的谓

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

colorcode是(Calendar)的列表,Calendar类有一个名为DtmDate的属性,我想与该属性进行比较并返回所需的对象

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

我从谷歌那里得到了谓词样本,并且一直到现在。但不确定如何将我的参数(即日期)传递给它。

您必须创建自己的谓词。您可以使用lambda来实现这一点,通过将局部变量“提升”到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表达式: