微软公司提供只能返回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. PHP生成zip压缩包

    /* * $res = new MakeZip($dir,$zipName); *@ $dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ $ ...

  2. 为什么GPU可以用于科学计算【转载】

    转自:https://blog.csdn.net/xihuanyuye/article/details/81178352 https://www.zhihu.com/question/35063258 ...

  3. Locust性能测试4-参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  4. Struts2-综合项目

    综合项目:视频后台管理系统 开发环境:Tomcat6(服务器)+jdk6(windows操作系统) 使用技术:struts2(后台)+jsp(前台显示)+ajax(信息传递)+json(服务器响应前台 ...

  5. js删除逗号

    var aaa="123,432,34.00 aaa.replace(/,/g, '');

  6. 浅谈css中渐变衔接

    无论transition还是keyframes,如何让变化更自然,这是前端应该考虑的问题. 这里,我简单总结下自己的方法. 以实践为例子. 1.图像渐变 @keyframes looppic{ fro ...

  7. Loadrunder场景设计篇——添加windows Resource计数器和指标说明

    目的 监控要测试的windows服务器的资源使用情况 A.添加计数器步骤 1.添加视图,方法双击.拖动左侧的Windows Rescources到右边图形区,或右键右侧已有视图,Open a New ...

  8. 命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“Excel”。是否缺少程序集引用 的另一种解决方案

    一直以来都是使用tfs进行源代码管理,系统部署也是由我本机生成后发布到服务器上,某一日,进行发布操作时,报了 [命名空间“Microsoft.Office.Interop”中不存在类型或命名空间名称“ ...

  9. pandas练习(三)------ 数据分组

    探索酒类消费数据 相关数据见(github) 步骤1 - 导入pandas库 import pandas as pd 步骤2 - 数据集 path3 = "./data/drinks.csv ...

  10. Python: re.IGNORECASE 标志参数字符串忽略大小写的搜索替换

    为了在文本操作时忽略大小写,需要在使用re 模块的时候给这些操作提供re.IGNORECASE 标志参数.比如 >>> text = 'UPPER PYTHON, lower pyt ...