经常用的Lambda表达式 返回的是  Expression<T> 格式

 public class ActivityService
{
private readonly List<Activity> _source = new List<Activity>(); public ActivityService()
{
_source.Add(new Activity()
{
Id = "5656d551d430520e100fa4f5" ,
Name="奥运会"
});
_source.Add(new Activity()
{
Id = "d702abd8",
Name = "亚运会"
});
_source.Add(new Activity()
{
Id = "706b0ba267a9",
Name = "美洲杯"
}); _source.Add(new Activity()
{
Id = "47d6",
Name = "世界杯"
});
_source.Add(new Activity()
{
Id = "4a8d",
Name = "大运会"
});
_source.Add(new Activity()
{
Id = "acdb",
Name = "欧洲杯"
});
} public Activity GetOne(Expression<Func<Activity, bool>> where)
{
var func = where.Compile();
return _source.FirstOrDefault(o => func(o)); }
}

  

  public class Activity
{
public string Id { get; set; }
public string Name { get; set; } }

  

调用方式如下:

class Program
{
static void Main(string[] args)
{
ActivityService service=new ActivityService();
string id = string.Empty;
string name = "大运会"; //表达式不支持语句块
Expression<Func<Activity, bool>> expression =
(Activity a) => string.IsNullOrEmpty(id) ? a.Name == name : a.Id == id; //如果需要语句块 可以直接使用委托,然后有2种方法 (1)将其封装到Excepression (2)直接使用Lambda表达式
Func<Activity, bool> func = (a) =>
{
if (!string.IsNullOrEmpty(id))
return a.Id == id;
return a.Name == name;
};
//expression = (Activity a) => func(a);
//或者直接在下面使用Lambda
var activity2 = service.GetOne( (a)=>func(a)); var activity = service.GetOne(expression);
Console.Read();
}
}

  

Lambda表达式 和 Expression<T>的更多相关文章

  1. 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底

    本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...

  2. C#中Lambda表达式类型Expression不接受lambda函数

    在EF Core中我们经常会用System.Linq.Expressions系统命名空间的Expression<TDelegate>类型来作为EF Core的查询条件,比如: using ...

  3. 深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types

    匿名函数 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式.匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情).匿名函数转换的计算取 ...

  4. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  5. Util应用程序框架公共操作类(七):Lambda表达式公共操作类

    前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...

  6. C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  7. 动态LINQ(Lambda表达式)构建

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  8. 匿名函数 lambda表达式(lambda expression)

    阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call =  [this, log_directory]() {return pimpl_->backgroundChang ...

  9. 基类的参考Expression能传一个lambda表达式

    using System;using System.Collections.Generic;using System.Data.Entity.Infrastructure;using System.L ...

随机推荐

  1. 当在XP系统上无法安装Mysql ODBC时,怎么办?

    system32下面缺失如下连接中的dll http://www.33lc.com/soft/19950.html 这个dll名为: msvcr100.dll 本来安装过程中会出现Error 1918 ...

  2. parse date receiving from mvc jsonresult

    if we received data like this: ,"Date":"\/Date(1410969600000)\/", we can parse i ...

  3. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  4. git将本地代码 和服务器git@osc 上的代码 关联

    将本地代码 和服务器git@osc 上的代码 关联 要使用git 首先,你得安装一个git 下载 http://git-scm.com/downloads 安装完成后,需要简单的配置一下,打开 Git ...

  5. Perl 的面向对象编程

    转自 http://net.pku.edu.cn/~yhf/tutorial/perl/perl_13.html 拓展阅读 http://bbs.chinaunix.net/forum.php?mod ...

  6. AS技巧合集「编码技巧篇」

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254725&extra=page%3D2%26filter%3Dautho ...

  7. 【codevs1033】 蚯蚓的游戏问题

    http://codevs.cn/problem/1033/ (题目链接) 题意 给出一个梯形的数列,每一个数可以向它左下方和右下方的数走.求从第一行走到最后一行的不重叠的K条路径,使得经过的数的和最 ...

  8. 【bzoj2120】 数颜色

    http://www.lydsy.com/JudgeOnline/problem.php?id=2120 (题目链接) 题意 给出一个n个数,m个询问,每次询问一个区间或修改一个数,求区间内不同的数有 ...

  9. bzoj2716: [Violet 3]天使玩偶

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  10. BZOJ2440 [中山市选2011]完全平方数

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...