static void Main(string[] args)
{
List<string> TempList = new List<string>();
TempList.Add("TempOne");
TempList.Add("TempTwo");
TempList.Add("TempThree");
TempList.Add("Tempfour");
Predicate<string> pre1 = delegate(string value)//匿名委托
{
return value.Contains("pT");
};
var values = TempList.FindAll(pre1);
if (values != null)
{
foreach (string value in values)
{
Console.WriteLine(":-->" + value);
}
}
Console.WriteLine("------------------------------");
Predicate<string> pre2 = model => model.StartsWith("T");//那什么表达式
values = TempList.FindAll(pre2);
if (values != null)
{
foreach (string value in values)
{
Console.WriteLine(":-->" + value);
}
}
Console.WriteLine("----------------------------");
values = TempList.FindAll(model => model.EndsWith("e"));//用表达式做参数
if (values != null)
{
foreach (string value in values)
{
Console.WriteLine(":-->" + value);
}
}
Console.WriteLine("---------------------------");
Console.ReadKey(true);
}
追加一些MSDN的解释:
Predicate<T> 是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true,
在使用FindAll<T>方法时:
数组中的元素被逐个传递给 Predicate<T>,与条件匹配的元素则保存在返回数组中。
而Find<T>仅仅返回第一个匹配的元素。
类型参数
-
in
T
-
要比较的对象的类型。
该类型参数是逆变的。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
参数
-
obj
-
类型:
T
要按照由此委托表示的方法中定义的条件进行比较的对象。