微软公司提供只能返回bool值,接受一个参数的委托类型(Predicate)。
//Predicate委托
public static class PredicateDemo{
//内置方法
public static void TestPredicate(){
//泛型集合
List<User> user = Five.GetList();
//user.Find();
//返回一个bool值
//例1
List<user> newUslist = user.FindAll(new Predicate<User>(delegate(User u){u.age>;})); //返回一个bool值
//例2
List<user> newUslist = user.FindAll(new Predicate<User>(delegate(User u ){
bool isTrue = false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
})); Console.WriteLine(newUslist.toList()); //调用自定义委托
List<User> newUslist = user.MyFind(new PanDuan<User>(delegate(User u){
bool isTrue =false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
}));
} #region 自定义委托
public delegate bool PanDuan<T>(T t); public static List<T> MyFind(this List<T> ls,PanDuan<T> match){
List<T> newTs = new List<T>();
foreach(T t in ls){
if(match(t)){
newTs.Add(t);
}
}
return newTs;
}
#endregion //上面两个例子放回结果是一样的。 -----------------------------------------------
lambad表达式 //例2
List<user> newUslist = user.FindAll(new Predicate<User>(delegate(User u ){
bool isTrue = false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
}));
第一步去掉 new Predicate<User>
List<user> newUslist = user.FindAll(delegate(User u ){
bool isTrue = false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
});
第二步去掉 去掉匿名函数delegate(User u)换成 u=>
List<user> newUslist = user.FindAll({
bool isTrue = false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
}));
如下:
List<user> newUslist = user.FindAll(u=>{
bool isTrue = false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
}); //自定义委托改写lambad表达式
//调用自定义委托
List<User> newUslist = user.MyFind(u=>{
bool isTrue =false;
if(u.PassWord.equals("")&&u.age > ){
isTrue =true;
}
return isTrue;
});
}
 

MVC ---- 如何使用Predicate以及如何自定定义Predicate委托的更多相关文章

  1. [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件

    在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...

  2. Predicate<T>与Func<T, bool>泛型委托

    引用别人的: static void Main(string[] args) { List<string> l = new List<string>(); l.Add(&quo ...

  3. C#中Predicate<T>与Func<T, bool>泛型委托的用法实例

    本文以实例形式分析了C#中Predicate<T>与Func<T, bool>泛型委托的用法,分享给大家供大家参考之用.具体如下: 先来看看下面的例子: 1 2 3 4 5 6 ...

  4. (转)MVC语法-@helpers和@functions(Razor内定义函数)

    (转)MVC语法-@helpers和@functions(Razor内定义函数) 转自:http://www.mikesdotnetting.com/Article/173/The-Differenc ...

  5. MVC自定定义扩展点之ActionNameSelectorAttribute+ActionFilterAttribute 在浏览器中打开pdf文档

    仅仅演示 了ASP.MVC 5 下为了在在浏览器中打开pdf文档的实现方式之一,借此理解下自定义ActionNameSelectorAttribute+ActionFilterAttribute 类的 ...

  6. 【nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--控制器的声明定义和发现篇(3/8)

    文章目录 前情概要 前面文章把路由已经介绍的差不多了,包括url映射,路由选择等.接下来讲一讲controller的一些基本规则 BaseController的所有代码都在这里拉.相当简单. 主要逻辑 ...

  7. STL - 判断式(Predicate) - 单参判断式(Unary Predicate)

    Predicate是一种特殊的辅助函数,它会返回Boolean,常常被用来作为排序或者查找准则. Predicate会有1个或者2个操作数. Unary Predicate(单参判断式) 例子: 我们 ...

  8. Asp.Net MVC Views页面不包含“GetEnumerator”的公共定义

    “/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1579: “Web.Model ...

  9. MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示(补充)

    在2.1.栏目的前台显示中因右键没有添加视图把微软给鄙视了一下,后来有仔细研究了一下发现应该鄙视自己,其实这个功能是有的,是自己没搞清楚乱吐糟. 其实只要在NuGet中安装两个包(Microsoft. ...

随机推荐

  1. postman 安装,对elasticsearch进行请求

    1  使用postman对elasticsearch进行测试 :下载插件: https://www.getpostman.com/apps ,下载时exe文件,双击自动安装,首次打开注册.下面就可以使 ...

  2. Linux中Kill掉进程的10种方法

    常规篇: 首先,用ps查看进程,方法如下: 复制代码 代码如下: $ ps -ef……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 ...

  3. python-字符串前面添加u,r,b的含义

    u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u:但是中文, ...

  4. 松下 激光位移传感器 API

    一: /* ============================================================================================== ...

  5. Vue.Js加入bootstrap及jquery,或加入其他插件vue-resource,vuex等

    .引入jquery 项目目录下输入 cnpm install jquery --save-dev      用npm下载jq依赖 若想加入其他js库,如vue-resource,执行命令cnpm in ...

  6. SQL Server 将查询结果导出插入(insert)语句的简单方式

    转自 http://blog.csdn.net/danny_style/article/details/45166391 1.首先将查询结果添加到一个原数据库中不存在的表,表名随意命名. 例:SELE ...

  7. 有关padding的二三事~~

    浏览器支持 所有浏览器都支持 padding 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 pa ...

  8. 持续集成之二:搭建SVN服务器(整合Apache+Subversion)

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 rhel-server-7.3-x86_64-dvd.iso ...

  9. MyBatis学习笔记(七)——Mybatis缓存

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4270403.html 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓 ...

  10. 在线js调试工具JSbin、jsFiddle

    在线js调试工具JSbin.jsFiddle JS Bin - Collaborative JavaScript Debugginghttp://jsbin.com/?html,output这个在线j ...