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

Lambda Expression in C#的更多相关文章

  1. hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression) 分类: hdoj 2015-06-15 17:47 26人阅读 评论(0) 收藏

    partial sort. first use std::nth_element to find pivot, then use std::stable_partition with the pivo ...

  2. Part 99 Lambda expression in c#

    class Program { static void Main(string[] args) { List<Person> persons = new List<Person> ...

  3. 浅析Java 8新特性Lambda Expression

    什么是Lambda Expression 对于Lambda Expression,我的理解是,它是一个函数表达式,如下: (int x, int y) -> x - y 符号左边定义了函数的输入 ...

  4. Lambda Expression

    Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口.下面这个例子就是使用Lambda语法来代替匿名的内部类 ...

  5. Variable used in lambda expression should be final or effectively final

    Lambda与匿名内部类在访问外部变量时,都不允许有修改变量的倾向,即若: final double a = 3.141592; double b = 3.141592; DoubleUnaryOpe ...

  6. JDK 8 - Lambda Expression 的优点与限制

    我们知道 JDK 8 新增了 Lambda Expression 这一特性. JDK 8 为什么要新增这个特性呢? 这个特性给 JDK 8 带来了什么好处? 它可以做什么?不可以做什么? 在这篇文章, ...

  7. 关于 lambda expression 返回值的类型转换

    lambda expression(lambda 表达式,$\lambda$ 表达式) 是 C++ 11 引入的特性. 一般而言,lambda 表达式的返回值类型可不指定,而由返回值推断. 需要注意的 ...

  8. C++ lambda expression

    Emerged since c++11, lambda expression/function is an unnamed function object capable of capturing v ...

  9. 三元運算子回傳lambda expression

    紀錄一下 假如我想要透過三元運算子?: 傳回lambda expression 要明確轉型

随机推荐

  1. Oracle sql例子

    create database oracle1 )) select * from class ,'一班') ,'二班') ,'三班') --创建学生表 ),cid int ,constraint FK ...

  2. JavaScript中数组Array.sort()排序方法详解

    JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...

  3. JDK7集合框架源码阅读(七) ArrayDeque

    基于版本jdk1.7.0_80 java.util.ArrayDeque 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to li ...

  4. HDU 5649.DZY Loves Sorting-线段树+二分-当前第k个位置的数

    DZY Loves Sorting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Oth ...

  5. Tarjan缩点【p1726】上白泽慧音

    Description 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的 ...

  6. Xamarin XAML语言教程通过ProgressTo方法对进度条设置

    Xamarin XAML语言教程通过ProgressTo方法对进度条设置 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo ...

  7. UVA 10765 Doves and bombs 割点

    最近好懒,堆了好多题没写题解.. 原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...

  8. H-Index II -- LeetCode

    Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...

  9. Burnside引理与polay定理

    #Burnside引理与polay定理 引入概念 1.置换 简单来说就是最元素进行重排列 是所有元素的异议映射,即\([1,n]\)映射到\([1,n]\) \[ \begin{pmatrix} 1& ...

  10. 把我的漫画浏览器后台程序迁移到GAE上了

    这两天看了一下Python和GAE相关资料,作为练手,把我以前写的Windows 8下看漫画的程序的后台解析算法迁移到了GAE上了. 之前由于没有后台服务器,很多东西在本地实现起来不是很方便,现在拿G ...