C# 联合查询_C#中的LINQ

d31d9c9b4fc8b75ca0670918614bc4e0.png
LINQ-----------让语言更优美,让查询更便捷,让代码更出色。

前言:

LINQ(Language Integrated Query )语言集成查询,是一组用于C#和VB语言的拓展,它允许VB或者C#代码以操作内存数据的方式,查询数据库。

在以前http://ado.net中,我们通常需要需要定义字符串,比如查询语句:

string 

而如果涉及到存储过程、试图,多表联合查询,我们通常也需要写很复杂的查询字符串,这其中难保不会出现错误,而LINQ是在.net Framework3.5之后出现的新的技术。

LINQ使用的优点:

  1. 无需复杂学习过程即可上手。
  2. 编写更少代码即可创建完整应用。
  3. 更快开发错误更少的应用程序。
  4. 无需求助奇怪的编程技巧就可合并数据源。
  5. 能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高。
  6. 任何对象或数据源都可以定制实现LINQ适配器,为数据交互带来真正方便。

LINQ主要包含一下三个部分

  • LINQ to Object主要负责对象的查询
  • 对关系数据的查询 LINQ to Entity如EF(Entity Framework)
  • LINQ to XML

LINQ的语法

第一种写法:查询语句,类似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的第一种写法

aaec4102c11421aabb313d1e76d43099.png

要点解析:必须以from开头。以select或者group by结尾。

from a ,其中a其中元素, in 数据源。中间以各种条件连接,比如where 、order by

结尾select 查出这个筛选之后的a。当然也可以使用匿名对象或者新的已构造的对象

常见子句有:

  • from子句:指定查询操作的数据源和范围变量
  • where子句:筛选元素的逻辑条件,返回值是一个bool类型
  • select子句:指定查询结果的类型和表现形式
  • orderby子句:对查询结果进行排序(升序或者降序)
  • group子句:对查询结果进行分组
  • into子句:提供一个临时标识符,该表示可充当对join/group/select子句结果的引用
  • join子句:连接多个查询操作的数据源
  • let子句:引入用于存储查询表达式中的子表达式结果的范围变量

57c471b57eac8b8e781a233eba1ae950.png

第二种写法:方法语法

	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)。

查询方法和查询语句的优劣各一,查询语句可读性显然更好,在实际开发过程中我们一般使用方法语法和语句语法结合使用来满足实际的需要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值