Lambda Expression in C#
2024-09-04 12:23:11
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#
https://msdn.microsoft.com/en-us/library/bb397687.aspx
巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)
。
最新文章
- html中<;radio>;单选按钮控件标签用法解析及如何设置默认选中
- Shell父进程获取子进程的变量值
- 软件测试 -- 和用户共同测试(UAT测试)的注意点有哪些
- 让qq图标在自己的网站上显示方法
- About Unixstickers - Unixstickers - stickers on unix, programming, software, development and open source
- php 关了浏览器也可以自动运行脚本
- sublime text3开发python并设置快捷键
- 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目
- AGC010 - C: Cleaning
- windows xp + mysql5.5 + phpmyadmin insert 中文繁體
- mssql sqlserver 索引专题
- ILBC 运行时 (ILBC Runtime) 架构
- MySQL 中的数字类型
- asp.net mvc开发过程中的一些小细节
- Linux lsof 命令
- JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON
- 1.about
- LigerUi中为Grid表加上序号,并调整适当宽度!(实例)
- RHEL7 MariaDB测试
- python标准库介绍——8 operator 模块详解