C#的Lambda表达式

2021/4/15 12:26:41

本文主要是介绍C#的Lambda表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一.作用

Lambda 表达式是一个匿名函数,用它可以高效简化代码,常用作委托,回调
Lambda 表达式都使用运算符=>,所以当你见到这个符号,基本上就是一个 Lambda 表达式
Lambda 运算符的左边是输入参数(),=>,右边是表达式或语句块
Lambda 表达式,是可以访问到外部变量的
下面是一个典型的查询Lambda

db.RndtSc.Where(p => p.SC == RV.ID).FirstOrDefault();

二.优势

Lambda表达式是为了简化C#的代码而出现的
Lambda表达式不用定义函数名,直接就是参数列表加函数体,避免了函数对命名空间的污染。下面这个就可以体现出来

(a,b)=>{return a+b;} 
sum(a,b);
   public int sum(int a,int b){
   return a+b;
}

三.应用

使用where
var SCInfo = db.RndtSc.Where(p => p.SC == RV.ID).FirstOrDefault();
FirstOrDefault查询第一条数据

var SCInfo = db.RndtSc.Where(p => p.SC == RV.ID).FirstOrDefault();

ToList();查询数据的集合

var SCInfo = db.RndtSc.Where(p => p.SC == RV.ID).ToList();

Any返回一个布尔值有就true没有就false

var SCI2nfo = db.RndtSc.Where(p => p.SC == RV.ID).Any();

AsQueryable转换为泛型

var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).AsQueryable();

Average 数学计算平均值

var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Average(p => p.SC);

Concat连接二个数据源

var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Concat(db.RndtSc);

Contains是否包含这个序列

RndtSc aa = new RndtSc();
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Contains(aa);

Count数学函数集合的数量
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Count();
DefaultIfEmpty返回指定序列如果序列为空返回类型参数的默认值
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).DefaultIfEmpty();
DeleteFromQuery 用于从所描述的查询中删除

var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).DeleteFromQuery ();

Distinct 返回非重复的集合
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Distinct ();

返回指定的处的元素
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).ElementAt (1);
ElementType 返回指定处的元素如果超出索引返回默认值
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).ElementAtOrDefault (1);
返回指定元素的类型
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).ElementType ;
Equals返回指定对象是否相等
RndtSc aa = new RndtSc();
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Equals(aa) ;
Except返回二个差集
RndtSc aa = new RndtSc();
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).Except(db.RndtSc) ;
First返回序列的第一个元素
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).First();
First返回序列的第一个元素 如果不包含元素返回默认值
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).FirstOrDefault();
GroupBy个根据某个字段分组
var pesrson = db.RndtSc.Where(p => p.SC == RV.ID).GroupBy(p=> p.LABEL_FORMAT);
join使用二个序列进行关联
var result = persons.Join(cities, p => p.CityID, c => c.ID, (p, c) => new { PersonName = p.Name, CityName = c.Name });
Last获取最后一个元素
var result = persons.Last();
Last获取最后一个元素,如果没有就返回一个默认值
var result = persons.LastOrDefault();
返回该数组的所有元素的总和
var result = persons.Length;
返回该元素中的总数量
var result = persons.LongCount();
获得一个64位的整数所以维度的元素总和
var result = persons.LongLength;
返回该序列中的最大值
var result = persons.Max();
返回该序列中的最小值
var result = persons.Max();
升序对元素进行排列
var result = persons.OrderBy(P=> P.Name);
降序对元素进行排列
var result = persons.OrderByDescending(P=> P.Name)
返回元素的维度
var result = persons.Rank;
反转元素中的顺序
var result = persons.Reverse();
查询指定序列
var result = persons.Select(p=> p.Name);
处理过后指定序列
var result = persons.SelectMany(p=> p.Name);
序列比较
var result = persons.SequenceEqual(persons);
调过指定序列返回剩下的
var result = persons.Skip(12);
数学聚合返回合值
var result = db.RndtScAu.Sum(p => p.AU);
从序列开头返回几条数据
var result = db.RndtScAu.Take(10);
对某件键进行升序排序
var result = db.RndtScAu.ThenBy(p => p.AU);
对某件键进行降序排序
var result = db.RndtScAu.ThenByDescending(p => p.AU);
转换位一个数组
var result = db.RndtScAu.ToArray();
转换成一个list
var result = db.RndtScAu.ToList();
使用where条件筛选
var result = db.RndtScAu.Where(p=> p.SC==1)



这篇关于C#的Lambda表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程