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转为字典
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多字段分组
var list = query.GroupBy(x => new { x.ID, x.Name }).Select(x => new { ID= x.Key.ID, Name = x.Key.Name }).ToList();
Linq示例
//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.数据源 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条数据;