MVC ---- 如何使用Predicate以及如何自定定义Predicate委托
微软公司提供只能返回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委托的更多相关文章
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- Predicate<T>与Func<T, bool>泛型委托
引用别人的: static void Main(string[] args) { List<string> l = new List<string>(); l.Add(&quo ...
- C#中Predicate<T>与Func<T, bool>泛型委托的用法实例
本文以实例形式分析了C#中Predicate<T>与Func<T, bool>泛型委托的用法,分享给大家供大家参考之用.具体如下: 先来看看下面的例子: 1 2 3 4 5 6 ...
- (转)MVC语法-@helpers和@functions(Razor内定义函数)
(转)MVC语法-@helpers和@functions(Razor内定义函数) 转自:http://www.mikesdotnetting.com/Article/173/The-Differenc ...
- MVC自定定义扩展点之ActionNameSelectorAttribute+ActionFilterAttribute 在浏览器中打开pdf文档
仅仅演示 了ASP.MVC 5 下为了在在浏览器中打开pdf文档的实现方式之一,借此理解下自定义ActionNameSelectorAttribute+ActionFilterAttribute 类的 ...
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--控制器的声明定义和发现篇(3/8)
文章目录 前情概要 前面文章把路由已经介绍的差不多了,包括url映射,路由选择等.接下来讲一讲controller的一些基本规则 BaseController的所有代码都在这里拉.相当简单. 主要逻辑 ...
- STL - 判断式(Predicate) - 单参判断式(Unary Predicate)
Predicate是一种特殊的辅助函数,它会返回Boolean,常常被用来作为排序或者查找准则. Predicate会有1个或者2个操作数. Unary Predicate(单参判断式) 例子: 我们 ...
- Asp.Net MVC Views页面不包含“GetEnumerator”的公共定义
“/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1579: “Web.Model ...
- MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示(补充)
在2.1.栏目的前台显示中因右键没有添加视图把微软给鄙视了一下,后来有仔细研究了一下发现应该鄙视自己,其实这个功能是有的,是自己没搞清楚乱吐糟. 其实只要在NuGet中安装两个包(Microsoft. ...
随机推荐
- spring boot集成shrio用于权限控制
下面是一个简单的springBoot集成shrio的项目,技术是:spring boot+idea+gradle+shrio+mybatis 1:首先在build.gradle中导入依赖 builds ...
- [django]celery_redis探索
celery+redis能做什么及简单原理 能干嘛: 看这里http://yshblog.com/blog/163 https://segmentfault.com/a/119000001565487 ...
- [py]django表单不清空实现的2种方法
参考 参考: django实现内容不清空2种方法 django form的作用 1.生成html标签 2.验证输入内容 form生成表单 zhuji/forms.py - 实例化表单 - 定制form ...
- Python中使用中文正则表达式匹配指定的中文字符串
业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发 ...
- AngularJS 模型
ng-model 指令将HTML 控制器(input, select, textarea)的值 和 应用程序数据进行绑定. ng-model 指令 ng-model 指令可以将输入域的值与 Angul ...
- leetcode & lintcode 题解
刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...
- 下载mysql的源码包
- 搭建Python3的jupyter notebook服务器
摘要:搭建Python3 jupyter notebook. 激活Python3后,进入Python交互环境 1. 登陆远程服务器 2. 生成配置文件 1. $jupyter notebook --g ...
- EntityFramework包含作用
System.Data.Entity.Infrastructure.DbQuery的引用需要加入上面那个包
- Java SE 基础知识(二)
1. 类由两大部分构成:属性和方法.属性一般用名词来表示,方法一般用动词来表示. 2. 如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,可以都不是public的. ...