C# Predicate委托
Predicate在集合搜索和WPF数据绑定中用途广泛,其调用形式:
调用形式:Predicate<object>(Method)/Predicate<参数类型>(方法)
1.<>表示泛型,可以接受任何类型的参数
2.(Method)可以接受方法为参数进行传递,表示一个委托
3.返回类型为bool型,表示成功与否
一个例子,在empList中查找特定项:

class Employee
{
private string _firstName;
private string _lastName;
//private int _empCode;
private string _designation; public Employee()
{ }
public Employee(string firstName, string lastName, string designation)
{
_firstName = firstName;
_lastName = lastName;
_designation = designation;
}
/// <summary>
/// Property First Name
/// </summary>
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
/// <summary>
/// Property Last Name
/// </summary>
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public string Designation
{
get { return _designation; }
set { _designation = value; }
}

1.传统方法
定义一个搜索方法:

static bool EmpSearch(Employee emp)
{
if (emp.FirstName == "Anshu")
return true;
else
return false;
}

使用泛型的Find()方法,Find()内部自动迭代调用EmpSearch方法
Predicate<Employee> pred = new Predicate<Employee(EmpSearch);
Employee emp = empList.Find(pred);
2.使用匿名方法

emp = empList.Find(delegate(Employee e)
{
if(e.FirstName == "Anshu")
return true;
else
return false;
});

不需要重新显式的定义方法,代码更加简洁
3.使用lambda表达式
emp = new Employee();
emp = empList.Find((e)=> {return (e.FirstName == "Anshu");});
(e)=>表示传递一个参数,参数类型能够自动解析
4.搜索列表
List<Employee> employees = new List<Employee>();
employees = empList.FindAll((e) => { return (e.FirstName.Contains("J")); });
5.搜索索引
通过指定开始索引和搜索条目的数量来缩小搜索的范围
int index = empList.FindIndex(0,2,(e) => { return (e.FirstName.Contains("J"));
表示从索引0开始,搜索2个条目。
6.List中常用的比较器委托
给下列数组排序

var data = new List<int>();
var rand = new Random();
Console.WriteLine("Unsorted list");
for (int i = 0; i < 10; i++)
{
int d =rand.Next(0,100);
data.Add(d);
Console.Write("{0} ",d);
}

使用Lampda表示式进行从大到小排序
data.Sort((e1, e2) => {return e1.CompareTo(e2) ;});
C# Predicate委托的更多相关文章
- C#中常见的委托(Func委托、Action委托、Predicate委托)
今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通 ...
- MVC ---- 如何使用Predicate以及如何自定定义Predicate委托
微软公司提供只能返回bool值,接受一个参数的委托类型(Predicate). //Predicate委托 public static class PredicateDemo{ //内置方法 publ ...
- c# Action,Func,Predicate委托
System命名空间下已经预先定义好了三中泛型委托,Action,Func和Predicate,这样我们在编程的时候,就不必要自己去定义这些委托了 Action是没有返回值的 Func是带返回值的 不 ...
- C#委托的介绍(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Deleg ...
- C#委托的介绍(delegate、Action、Func、predicate) --转载
来源:http://www.cnblogs.com/akwwl/p/3232679.html 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1 ...
- .NET (五)委托第五讲:内置委托Predicate
// 摘要: // 表示定义一组条件并确定指定对象是否符合这些条件的方法. // // 参数: // obj: // 要按照由此委托表示的方法中定义的条件进行比较的对象. // // 类型参数: // ...
- 【转】C# 委托的介绍(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegat ...
- C#委托的介绍(delegate、Action、Func、predicate)(转)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Deleg ...
- C#委托的介绍(delegate、Action、Func、predicate)【转】
转自 http://www.cnblogs.com/akwwl/p/3232679.html 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1 ...
随机推荐
- MySQL安装pdf介绍
pdf地址:https://files.cnblogs.com/files/pygo/mysql%E5%AE%89%E8%A3%85.pdf
- for循环和字典预习
print("*" *8)for a in range(1,9): print(a,end="")#1-9的奇数print()for a in range(1, ...
- Open CV 环境配置
{ //https://github.com/zhmmmm/ANYTOOL-2.0.0.0.2Version/tree/master/OpenCVProject } /* //各个版本下载 https ...
- Windows DHCP服务器
DHCP服务器 编辑 动态主机配置协议是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码.首先, DHCP服务器必须是一台安装有 ...
- Orika JavaBean映射工具探秘
Orika是一个简单.快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器. 关于: 作为开发人员,我们必须为业务问题提供解决方案,我们希望利用我们的时间来做真正重 ...
- 請問各位大大,我要將listview顯示的縮圖加入到listview2,請問該如何做呢
請問各位大大,我要將listview顯示的縮圖加入到listview2,請問該如何做呢?下面的function可以將listview的縮圖加到listview2但是全都顯示listview1第一張的圖 ...
- QQ聊天机器人 Delphi代码
QQ聊天机器人 前几日,看到杂志上有一篇关于开发QQ聊天机器人的文章.谈到了对QQ循环发送消息内容,感觉倒也很好玩,于是拿起Delphi开始了我的QQ聊天机器人之路. 首先要明白自己要做什么, ...
- Android Drawable 详解(教你画画!)
参考 1.Android中的Drawable基础与自定义Drawable 2.android中的drawable资源 3.Android开发之Shape详细解读 Drawable分类 No xml标签 ...
- centos一些故障解决方法
1. vmware下虚拟机centos,root登录时候提示鉴定故障解决方法 - lippor - 博客园 https://www.cnblogs.com/lippor/p/5537931.html ...
- Java中方法的定义与使用,以及对数组的初步了解。
方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...