一、说明
委托Predicate 可以有参数(比如下面的示例),也可以不带参数,委托Predicate是返回固定值bool值的委托
二、示例代码(控制台程序)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Learn1 { class Program { static void Main(string[] args) { int ageState = 1; int claState = 1; int age = 10; string className = "1班"; List<Student> myList = new List<Student>() { new Student(){ age=1, className="2班", name="同学1"}, new Student(){ age=2, className="1班", name="同学2"}, new Student(){ age=12, className="3班", name="同学3"}, new Student(){ age=6, className="3班", name="同学4"}, new Student(){ age=14, className="1班", name="同学5"}, new Student(){ age=18, className="1班", name="同学6"}, new Student(){ age=7, className="1班", name="同学7"}, new Student(){ age=15, className="2班", name="同学8"}, new Student(){ age=19, className="2班", name="同学9"}, new Student(){ age=25, className="1班", name="同学10"}, new Student(){ age=32, className="1班", name="同学11"}, new Student(){ age=16, className="1班", name="同学12"}, new Student(){ age=1, className="2班", name="同学13"} }; List<Student> resultList = myList.FindAll(new Predicate<Student>( delegate(Student stu) { bool IsOk = true; if (ageState==1) { if(stu.age<age) { IsOk = false; } } if(claState==1) { if(stu.className!=className) { IsOk = false; } } return IsOk; } )); resultList.ForEach(x => { Console.WriteLine("名称:{0},年龄:{1},班级:{2}",x.name,x.age,x.className); }); Console.ReadKey(); } } public class Student { public string name { get; set; } public string className { get; set; } public int age { get; set; } } }