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);
}

  

    1. //Linq中查询一个表中指定的几个字段:
    2. var ts = t.FindAllItems().Where(P => P.CompanyID == CurSiteUser.CompanyId).Select(s => new { BillPeriod = s.BillPeriodFieldB=s.FieldB }).Distinct().ToList().OrderByDescending(s => s.BillPeriod).Take();
    3. // FindAllItems()为查询对应表的所有数据的方法;
    4. // Where 里面为查询条件
    5. // Select 为查询的筛选条件 new{} 里面就是要查询的字段
    6. //Distinct() 为去除重复的查询
    7. //ToList() 为将查询转换为List<>
    8. //OrderByDescending() 表示排序字段及排序方法(倒序排列)
    9. //Take(N) 表示查询前N条数据;
posted @ 2022-11-01 11:05  microsoft-zhcn  阅读(162)  评论(0编辑  收藏  举报