博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Predicate委托
阅读量:5286 次
发布时间:2019-06-14

本文共 2332 字,大约阅读时间需要 7 分钟。

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;    }    ///     /// Property First Name    ///     public string FirstName     {        get { return _firstName; }        set { _firstName = value; }    }    ///     /// Property Last Name    ///     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
pred = new Predicate

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
employees = new List
();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
();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) ;});

 

文章来自-似水无痕:http://www.cnblogs.com/keylei203/

转载于:https://www.cnblogs.com/luohengstudy/p/3141880.html

你可能感兴趣的文章
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
第二次团队冲刺第二天
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
Linux误删恢复
查看>>
Unity调用Windows窗口句柄,选择文件和目录
查看>>
HashMap循环遍历方式
查看>>