LINQ-----------让语言更优美,让查询更便捷,让代码更出色。
LINQ(Language Integrated Query )语言集成查询,是一组用于C#和VB语言的拓展,它允许VB或者C#代码以操作内存数据的方式,查询数据库。
在以前http://ado.net中,我们通常需要需要定义字符串,比如查询语句:
string sql="select * from Student as s where s.Age>18";
而如果涉及到存储过程、试图,多表联合查询,我们通常也需要写很复杂的查询字符串,这其中难保不会出现错误,而LINQ是在.net Framework3.5之后出现的新的技术。
第一种写法:查询语句,类似SQL语法
Int[] nums={1,2,4,5,6,7};//数据源
Var list=from a in nums
Where a%2==0
Orderby a descending
Select a;//linq的第一种写法
要点解析:必须以from开头。以select或者group by结尾。
from a ,其中a其中元素, in 数据源。中间以各种条件连接,比如where 、order by
结尾select 查出这个筛选之后的a。当然也可以使用匿名对象或者新的已构造的对象
常见子句有:
第二种写法:方法语法
Var list=nums.where(a=>a%2==0).orderbydescending(a=>a);
//select 方法里面传递的是一个委托实例lambda表达式
var list4 = nums.Where(a => a % 2 == 0).OrderByDescending(item => item);
foreach (var item in list4)
{
Console.WriteLine(item);
}
string[] strs = { "胡广成","张国荣","刘德华","故国冰封","万里雪飘","AAA","胡翰轩","张杰"};
var list5 = strs
//.Where(a => a.Length == 3)
.Select(item => item)
.GroupBy(item => item.Length);//分组 分组依据是字符串的长度
foreach (var item in list5)
{
Console.WriteLine("----------------");
Console.WriteLine($"分组字段是{item.Key}"); //item.Key是分组依据 显示分组字段
foreach (var items in item)//内层循环遍历分组项
{
Console.WriteLine(items);
}
}
常见方法有:
Count()、Where()、OrderBy()【默认是升序】OrderByDescending()、Select()、GroupBy()、等等。方法语法中一般结合lambda表达式(委托delegate和匿名的结合)来使用。比如上述的Where(a => a.Length == 3)。
查询方法和查询语句的优劣各一,查询语句可读性显然更好,在实际开发过程中我们一般使用方法语法和语句语法结合使用来满足实际的需要。
欢迎关注我的微信公众号:与大成子一起学net --------获取更多学习资源
简书:https://www.jianshu.com/u/28508520897c
知乎:https://www.zhihu.com/people/tu-dou-hen-dou-49/posts
原文:https://www.cnblogs.com/xingxingzhou/p/11530841.html