当前位置: 首页 > 科技观察

C#实战积累:常用Lambda表达式排序

时间:2023-03-18 15:51:27 科技观察

1.什么是lambda表达式“lambda表达式”属于匿名函数,是C#编程语言类似于函数式编程的高效表达式。使用Lambda简化了匿名委托的使用,可以大大减少开发中需要编写的代码量。比如一些求和、去重、排序等,可以省略循环遍历的写法,让代码更简洁。2.lambda表达式写访问修饰符修饰符返回值类型方法名(参数列表)=>表达式;publicstaticintAdd(inta,intb)=>a+b;3.Lambda的本质Lambda的本质是方法匿名方法。可以通过lambda表达式访问lambda表达式块之外的变量,这称为闭包。intlamValue=10;Funcsum=x=>x+lamValue;当外部变量的值发生变化时,也会影响sum的结果,不推荐。4.lambda的内部实现过程编译器会创建一个匿名类,它有一个构造函数来传递外部变量。公共类AnonymousClass{  publicintlamValue;  publicAnonymousClass(intlamValue){    this.lamValue=lamValue;  }  publicintAnonymousMethod(intx)=>x+lamValue;}5.案例5.1使用System;namespaceStudy{[Serializable]publicclassGoods{///

///产品名称///publicstringName{get;放;}//////商品分类名称///publicstringCategoryName{get;放;}//////商品编码///publicstringCode{get;放;}//////商品单价///publicdoublePrice{get;放;}//////商品数量///publicintCount{get;放;}}}5.2。测试DemousingNewtonsoft.Json;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespaceStudy{classProgram{staticvoidMain(string[]args){varlist=newList();list.Add(newGoods{Name="小米12",CategoryName="手机",Price=3500.00,Code="001",Count=10});list.Add(newGoods{Name="LenovoT50",CategoryName="Notebook",Price=8800.00,Code="002",Count=25});list.Add(newGoods{Name="雷柏键鼠套装",CategoryName="Digital",Price=688.00,Code="003",Count=60});list.Add(newGoods{Name="华为蓝牙耳机",CategoryName="Digital",Price=998.00,Code="004",Count=7});//过滤类别为digital的数据varlist1=list.Where(m=>m.CategoryName=="Digital").ToList();//过滤数字或手机记录varlist2=list.Where(m=>m.CategoryName=="Digital"||m.CategoryName=="手机").ToList();//根据价格增加按顺序排序varlist3=list.OrderBy(m=>m.Price).ToList();//按价格降序排列varlist4=list.OrderByDescending(m=>m.Price).ToList();//根据分类分组只显示类别名称varlist5=list.GroupBy(m=>m.CategoryName).ToList();//查询类别为数字的产品总数varlist6=list.Where(m=>m.CategoryName=="Digital").Sum(m=>m.Count);//查询包含关键字machine的商品名称的平均价格varlist7=list.Where(m=>m.Name.Contains(“机器”))。Average(m=>m.Price);//按品类分组得到品类名称、总量、平均单价varlist8=list.GroupBy(m=>m.CategoryName).Select(n=>newGoods{CategoryName=n.FirstOrDefault().CategoryName,Price=n.Average(s=>s.Price),Count=n.Sum(s=>s.Count)});//获取当前列表的前两行varlist9=list.Take(2).ToList();//获取最后两行数据varlist10=list.TakeLast(2).ToList();//以list的形式跳过第一条记录进行分页memory,然后查询两项varlist11=list.Skip(1).Take(2).ToList();//比较并去重整个列表的所有属性varlist12=list.Distinct().ToList();//根据分类名称去重varlist13=list.Select(m=>m.CategoryName).Distinct().ToList();//Comma-splicedstrings获取数值类型字段拼接的前端字符串显示varjson1=string.Join(',',list.Select(m=>m.code)));//逗号加''单引号拼接字符串主要用于在查询sql时拼接varjson2=string.Join("','",list.Select(m=>m.Name))数据库时字段不是数字类型;控制台.WriteLine(json1);Console.WriteLine("倒序前");foreach(variteminlist){Console.WriteLine(JsonConvert.SerializeObject(item));}//列表反向操作list.Reverse();Console.WriteLine("倒序后");foreach(variteminlist){Console.WriteLine(JsonConvert.SerializeObject(item));}Console.WriteLine("HelloWorld!");}}}