在C#的语法中有一种比较特殊的写法,
叫做Lambda表达式,
这种表达式的写法在于你查询数据的时候直接是使用以下箭头的形式来表示查询语句的:=>。
例如,我们要查找学生的List< Student >集合中班级编号为1001的所有学生数据,
我们即可用Studentlist.Where(t=>t.ClassCode=‘1001’)语句来直接完成,
无需再写繁琐的foreach语句或者for循环。Lambda表达式的运算符即为=>。
一、Lambda表达式定义
Lambda表达式实际上是一种匿名函数,
在Lambda表达式中可以包含语句以及运算等操作。
并且可用于创建委托或表达式目录树类型,
支持带有可绑定到委托或表达式树的输入参数的内联表达式。
使用Lambda表达式可大大减少代码量,使得代码更加的优美、简洁,更有可观性。
public class LambdaController : Controller
{
LambdaEntities mylambda = new LambdaEntities();
public ActionResult Index()
{
//查询男生的数据list数据
var listman= mylambda.tblStudent.Where(t => t.StuSex == "男");
//查询班级编号为1001的班级下面的所有学生实体并返回到list1001中存储,并按照学生的出生日期从小到大排列。
var listbirthday = mylambda.tblStudent.Where(t => t.StuSex == "男").OrderBy(t => t.Sage);
//在此说一下,OrderBy是从小到大排序,需要从大到小排列则用OrderByDescending。
//查询班级编号为1001的班级下面的姓氏为【邓】的同学的所有集合,并按照学生的出生日期从小到大排列。
var listss = mylambda.tblStudent.Where(t => t.StuSex == "男" && t.StuName.StartsWith("邓")).OrderBy(t => t.Sage);
//查询出班级编号为1001的班级,并且存在至少一门考试科目成绩低于60分的所有同学。
//查询出分数的数据集合
var tables = (from tb in mylambda.tblScore
select new {tb.Score,tb.StuId }).ToList();
//这个是有错误的,报Linq语句错误
var result = mylambda.tblStudent.Where(t => (t.StuSex == "男") && (tables.Exists(p => p.Score < 60 && p.StuId == t.StuId)));
//在上述语句中,lambda表达式中再次嵌入了一个lambda表达式。
//t参数是studentList中的lambda表达式参数,代表实体为student。
//p参数为scoreList中的lambda表达式参数,代表的实体为score。
var a = mylambda.tblStudent.FirstOrDefault(t => t.StuSex == "男");//FirstOrDefault返回第一个符合条件的数据,不存在的时候返回Null。
//查询出学生的数据集合
var table = (from tb in mylambda.tblStudent
select tb).ToList();
//下面这个一段可以跟数据的函数做比价
var b = mylambda.tblStudent.Count(t => t.StuName == "凉凉");//返回符合条件的实体个数
var c = table.FindAll(t => t.StuName.Contains("爱"));//查找所有名字中含有【爱】的实体集合
var d = mylambda.tblStudent.GroupBy(t => t.StuSex);//对studentList按照ClassCode分组
var f = mylambda.tblStudent.Max(t => t.Sage);//返回最大的出生日期。
var e = mylambda.tblScore.Sum(t => t.Score);//对所有成绩求和
var g = mylambda.tblScore.Average(t => t.Score);//对所有成绩求平均分
var h = mylambda.tblStudent.Select(t => t.StuName).Distinct();//获取所有的学生姓名,并去除重名
List<string> myLists = new List<string> { "1", "2","靓靓","魔鬼" };
return View();
}
}