解释下Func<T, bool> exp
比如
interface IRepository<T> where T:class
{
IEnumerable<T> FindAll(Func<T, bool> exp);
}
我现在要调用FindAll方法,要怎么用?
Func<T, bool> exp
1、Func是一个匿名委托(形参exp的类型)
T是Func这个委托中的传入参数,即接口IRepository<T>的类型参数,由于带有约束where T:class, 所以T只能是类,而不能是结构等其他类型
bool代表Func的返回参数类型为bool
2、exp是方法的形参,Func委托类型的实例
3、IEnumerable<T>是方法的返回类型
用的时候可以这样
List<string> list = new List<string>();
这里只是举一个例子,实际中,只要是实现了IRepository<T>这个接口的类实例都可以这么用
list.FindAll(new Func<string, bool>(delegate(string str){ return str.Length > 0; }));
list.FindAll(delegate(string str) { return str.Length > 0; });
list.FindAll(new Func<string, bool>(str => {return str.Length > 0;}));
list.FindAll(new Func<string, bool>(str => str.Length > 0));
写法都是等效的,编译以后FindAll()里面的部分都是一个委托类型的实例
最后一个直接简化成一个Lambda表达式了
整个方法的返回类型为IEnumerable<string>
List<string> list = new List<string>();
list.FindAll(new Func<string, bool>(delegate(string str){ return str.Length > 0; }));
list.FindAll(delegate(string str) { return str.Length > 0; });
list.FindAll(str => {return str.Length > 0;});
list.FindAll(str => str.Length > 0);
解释下Func<T, bool> exp的更多相关文章
- lambda表达式Expression<Func<Person, bool>> 、Func<Person, bool>区别
前言: 自己通过lambda表达式的封装,将对应的表达式转成字符串的过程中,对lambda表达式有了新的认识 原因: 很多开发者对lambda表达式Expression<Func<Pers ...
- 转自pnljs 委托(Func<int,bool>)
随笔- 147 文章- 0 评论- 16 Func的介绍 经常看到 Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Fu ...
- C#中Predicate<T>与Func<T, bool>泛型委托的用法实例
本文以实例形式分析了C#中Predicate<T>与Func<T, bool>泛型委托的用法,分享给大家供大家参考之用.具体如下: 先来看看下面的例子: 1 2 3 4 5 6 ...
- .NetCore 扩展封装 Expression<Func<T, bool>> 查询条件遇到的问题
前面的文章封装了查询条件 自己去组装条件,但是对 And Or 这种组合支持很差,但是也不是不能支持,只是要写更多的代码看起来很臃肿 根据 Where(Expression<Func< ...
- Entity Framework 动态构造Lambda表达式Expression<Func<T, bool>>
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- .NET Core中合并Expression<Func<T,bool>>的正确姿势
这是在昨天的 .NET Core 迁移中遇到的问题,之前在 .NET Framework 中是这样合并 Expression<Func<T,bool>> 的: public s ...
- Predicate<T>与Func<T, bool>泛型委托
引用别人的: static void Main(string[] args) { List<string> l = new List<string>(); l.Add(&quo ...
- Expression<Func<TObject, bool>>与Func<TObject, bool>的区别
Func<TObject, bool>是委托(delegate) Expression<Func<TObject, bool>>是表达式 Expression编译后 ...
- 表达式拼接Expression<Func<IEntityMapper, bool>> predicate
/// <summary> /// 重写以筛选出当前上下文的实体映射信息 /// </summary> protected override IEnumerable<IE ...
随机推荐
- Expression Blend 的点滴(4)--创建类似iPhone屏幕锁控件(上)
原文:Expression Blend 的点滴(4)--创建类似iPhone屏幕锁控件(上) 本篇文章,最终效果图: 当然,不只是一个UI而已,如果只是一张图片,那专业的设计师能做出更出色的效果.在 ...
- 【codeforces 765A】Neverending competitions
[题目链接]:http://codeforces.com/contest/765/problem/A [题意] 给你一个人的n个行程 行程都是从家到某个地方或从某个地方到家; 且是无序的,且如果到了非 ...
- 【u115】&&【t031】 01迷宫
01迷宫(maze01) Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相 ...
- 【t017】YL杯超级篮球赛
Time Limit: 1 second Memory Limit: 256 MB [问题描述] 一年一度的高一YL杯超级篮球赛开赛了.当然,所谓超级的意思是参赛人数可能多于5人.小三对这场篮球赛非常 ...
- 微信小程序的轮播图swiper问题
微信小程序的轮播图swiper,调用后,怎样覆盖系统的 点,达到自己想要的效果 不多说,先上一图望大家多给意见: 这个是效果图: 微信小程序效果图就成这样子: <view class=" ...
- SQL Server 存储过程之嵌套游标
下面是一个订单取消的含2个游标的存储过程 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[CancelOrde ...
- Java 联系Oracle 数据库
一般完成 import oracle.jdbc.driver.*; 会后声明,你会发现一个错误.然后,你需要: 一.该JDBC开车到classpath 两种方法.一是图形化,计算机-属性-高级设置-环 ...
- 前端常见算法JS实现
算法是程序的灵魂,一个优秀的前端工程师对算法也是要有所了解的. 排序算法 1. 冒泡排序 //冒泡排序 function bubbleSort(arr){ var i = j = 0; for(i=1 ...
- 经典书单、站点 —— 大数据/数据分析/R语言
1. 科普.入门 <大数据智能>,刘知远.崔安顺等著: 特色:系统,宏观和全面: 2. R 语言站点 http://langdawei.com/:R 语言数据采集与可视化:
- Visual C# 2010 实现资源管理器
演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面 Visual Studio 2010 其他版本 此主题尚未评级 - 评价此主题 Vis ...