C# Linq 总结
Linq提供两种方法:方法语法(Lambda语法)、查询语法(Linq语法)
https://blog.csdn.net/weixin_45756851/article/details/126163607
https://www.nhooo.com/note/qa074s.html
https://blog.csdn.net/zyh_1988/article/details/53244489
https://www.cnblogs.com/fangjb/p/15843213.html
https://www.cnblogs.com/jamin/archive/2008/09/17/1292562.html
Linq中比较日期大小(部分比较)
https://blog.csdn.net/WuLex/article/details/121085885
https://www.cnblogs.com/johnyang/p/15436854.html
Lambda : 是实例化委托的一个参数,也就是一个匿名方法
Linq:是基于委托(lambda)的封装,代码重用,逻辑解耦,是一个帮助类库,linq是用泛型,委托,lamda实现的
Linq:提供了很多集合的扩展方法
int [] nums = new int [] { 1, 99, 2, 66, 15, 8 }; IEnumerable< int > items = nums.Where(i => i > 10); //IEnumerable<int> items = from x in nums where x > 10 select x; foreach ( int item in items) { Console.WriteLine(item); } //结果:99 66 15 |
LINQ关键字
from in 指定数据源和范围变量,返回IEnumerable
where 根据布尔表达式(由逻辑与或等组成)从数据源中筛选元素
select 指定查询结果中的元素所具有的类型或者表达式
group 对查询结果按照键值进行分组
into 提供一个标识符,它可以充分对join group 或者 select 子句结果的引用
orderby 对查询出的元素进行排序
join 按照两个指定匹配条件来链接两个数据源
let 产生一个用于查询表达式中表达式查询结果的范围变量
Linq转为字典
1 2 3 | var dic = query.ToList().GroupBy(x => x.ID).ToDictionary(x => x.Key, x => x.Select(xx => xx.Name)); //取字典值 var list = dic.GetValue(a.ID) ?? new List< string >(); |
Linq多字段分组
1 2 3 4 5 | var list = query.GroupBy(x => new { x.ID, x.Name }).Select(x => new { ID= x.Key.ID, Name = x.Key.Name }).ToList(); |
Linq示例
1 2 3 4 5 6 7 8 9 10 11 | //1.数据源 List< int > numbers = new List< int >() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //2.创建查询 var lingQuery = from n in numbers where n % 2 == 0 select n; //3.查询结果 foreach ( var n in lingQuery) { Console.Write(n); } |
Lambda示例
1 2 3 4 5 6 7 8 9 10 11 12 | //1.数据源 List< string > numbers = new List< string >() { "A" , "C" , "E" , "D" , "F" , "H" , "G" }; //2.创建查询 var lingQuery = from n in numbers select n; var lambdaQuery = lingQuery.Where(n => n.Length > 0).OrderBy(n => n); //3.查询结果 foreach ( var n in lambdaQuery) { Console.Write(n); } |
- //Linq中查询一个表中指定的几个字段:
- var ts = t.FindAllItems().Where(P => P.CompanyID == CurSiteUser.CompanyId).Select(s => new { BillPeriod = s.BillPeriod,FieldB=s.FieldB }).Distinct().ToList().OrderByDescending(s => s.BillPeriod).Take();
- // FindAllItems()为查询对应表的所有数据的方法;
- // Where 里面为查询条件
- // Select 为查询的筛选条件 new{} 里面就是要查询的字段
- //Distinct() 为去除重复的查询
- //ToList() 为将查询转换为List<>
- //OrderByDescending() 表示排序字段及排序方法(倒序排列)
- //Take(N) 表示查询前N条数据;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?