1、Expression

Expression<Func<double, double>> exp = a => Math.Sin(a);

委托类型Func<double, double>,它限定生成的表达式树是一个接受double,并返回double的一元Lambda函数

 <Func<double, double, double, double, double> 输入参数为4个double,返回一个double类型
  static void Main(string[] args)
{
Expression<Func<double, double, double, double, double>> myExp =
(a, b, m, n) => m * a * a + n * b * b; var calc = new BinaryExpressionCalculator(myExp);
Console.WriteLine(calc.Calculate(1, 2, 3, 4));
}

2、在linq to sql中的使用

LoadWith方法,输入类型为泛型T,输入参数为Expression,返回System.Linq.Expressions.LambdaExpression

LoadsWith方法,接受LambdaExpression[],加载数据

  <Func<T, object> 输入泛型,返回object(因为返回类型未定,所以为object)
    public partial class Db   //为Db.dbml文件的partial class 
    {         public static LambdaExpression LoadWith<T>(Expression<Func<T, object>> expression)
        {
            return expression;
        }
       
        public void LoadsWith(params LambdaExpression[] expressions)
        {
            var dlo = new DataLoadOptions();
            foreach (var expression in expressions)
            {
                dlo.LoadWith(expression);
            }
            LoadOptions = dlo;
        }            public static Db Open(bool readOnly = false) {       var db = new Db();       if (readOnly) db.ObjectTrackingEnabled = false;        return db;     }
    }

MSDN上对LoadWith的解释是:通过使用 lambda 表达式检索与主目标相关的指定数据。 LoadWith可以用一个sql语句加载相关表的数据

例如Student表inner join Class表,这就是LoadWith的意义所在。

调用:

 using (var db = Db.Open()) {

        db.LoadsWith(
Db.LoadWith<Project>(p => p.Client),
Db.LoadWith<Project>(p => p.Files)
); var project = db.Projects.SingleOrDefault(p => p.Id == form.Id);
}

Exploring Lambda Expression in C#

Expression Tree上手指南

https://msdn.microsoft.com/en-us/library/bb397687.aspx

巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)

linq to sql

最新文章

  1. html中&lt;radio&gt;单选按钮控件标签用法解析及如何设置默认选中
  2. Shell父进程获取子进程的变量值
  3. 软件测试 -- 和用户共同测试(UAT测试)的注意点有哪些
  4. 让qq图标在自己的网站上显示方法
  5. About Unixstickers - Unixstickers - stickers on unix, programming, software, development and open source
  6. php 关了浏览器也可以自动运行脚本
  7. sublime text3开发python并设置快捷键
  8. 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目
  9. AGC010 - C: Cleaning
  10. windows xp + mysql5.5 + phpmyadmin insert 中文繁體
  11. mssql sqlserver 索引专题
  12. ILBC 运行时 (ILBC Runtime) 架构
  13. MySQL 中的数字类型
  14. asp.net mvc开发过程中的一些小细节
  15. Linux lsof 命令
  16. JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON
  17. 1.about
  18. LigerUi中为Grid表加上序号,并调整适当宽度!(实例)
  19. RHEL7 MariaDB测试
  20. python标准库介绍——8 operator 模块详解

热门文章

  1. PSR-1 基础编码规范
  2. 前端设计的常用属性,CSS的盒模型,页面布局的利器
  3. Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】
  4. 【strork】HAOI2017旅游记
  5. c# Http Post访问接口方式
  6. 【微信】1.微信小程序开发--入门
  7. github 多账户配置
  8. easyUI样式之easyui-switchbutton
  9. PHP模板解析入门
  10. S5PV210之内外存学习