LINQ(Language Integrated Query)即语言集成查询。它是一种语言特性和API,使得你可以使用统一的方式编写各种查询,查询的对象包括xml、对象集合、SqlServer数据库等。

1、LINQ To Object      负责对象的查询

2、LINQ To XML         负责对XML的查询

3、LINQ To ADO.NET  负责数据库的查询

查询例如:

int[] numbers=new int[]{1,2,7,9,3,6}

List<int> array=new List<int>();

foreach(int temp in numbers)

{

if(temp%2==0)

{

array.Add(temp);

}

}

LINQ 查询:

int[] numbers=new int[]{1,3,5,9,2,7}

var even=numbers.where(p=>p%2==0).select(p=>p).OrderBy Descending(p=>p);//从数组中提取偶数并降序排列

even.sort();//升序

even.Reverse();//降序

Lambda表达式的进化:

C# 1.0  委托

C# 20  匿名方法

C# 3.0 Lambda表达式

委托:

delegate string ProcessString(string input);

ProcessString p=new ProcessString(Lowerlt);

foreach(string name in FoxRive)

{

console.WriteLine(p(name));

}

Private string Lowerlt(string input)

{

return input.ToLower();

}

匿名方法:

ProcessString p=new ProcessString(string input)

{

return input.ToLower();

}

foreach(string name in FoxRive)

{

console.WriteLine(p(name));

}

Lambda表达式:

ProcessString p=input=>input.ToLower();

foreach(string name in FoxRive)

{

console.WriteLine(p(name));

}

查询语句示例:

示例一:

int[] numbers=new int[]{6,4,3,2,1,9,7,8,5}

var even=numbers.where(p=>p%2==0)

.select(p=>{console.write(p.tostring())}); return p;)

foreach(var item in even)

{

console.writeline(item);

}

示例二:

int[] numbers=new int[]{6,4,3,2,1,9,7,8,5}

var even=from number in numbers

where  number%2==0)

.orderby number descending select number;

foreach(var item in even)

{

console.writeline(item);

}

复杂查询语句示例:

List<Person> p=GetFoxRiver();

var q=from a in p where a.Age<30 && a.FristName.Length=7

orderby a.Age DEscending

select new {Name=a.FristName+""+a.LastName,Age=a.Age};

foreach(var item in even)

{

console.writeline(item.Name+""+item.Age);

}

聚合类

int[] array=new int[]{1,3,7,9,2,14}

console.writeline("Max:{0}",array.Max());//返回最大值

console.writeline("Min:{0}",array.Min());//返回最小值

console.writeline("Average:{0}",array.Average());//返回平均值

var result=(from p in array where p.Startswith(',') select p).count();

console.writeline("count:{0}",result);//返回数组中总共几个数

分区类

var result=array.Take(3);//从序列开头返回指定数量,连续元素

结果:1,3,7

var result=array.Takewhere(p=>p%2==0);//满足条件就返回元素,不满足就不返回

结果:2,14

var result=array.where(p=>p%2==0).Take(1);//

结果:2

var result=array.skip(2);//跳出序列中指定数量的元素返回剩余值元素

结果:3,7,9,2,14

var result=array.skipwhere(p=>p》3);//

结果:7,9,2,14

集合类

var result=array.Distirot();//返回序列中非重复元素

生成类:

var result=Enumerable.Repeat("a",10).tolist();//生成包含一个重复值的序列

var result=Enumerable.Range(2,10).tolist();//生成一个指定范围内的序列

LinQ的一些基本语句的更多相关文章

  1. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  2. sql 、linq、lambda 查询语句的区别

    LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...

  3. linq直接执行sql语句

    1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该&quo ...

  4. sql、linq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理

    使用EF自己做的小功能需要遇到inner join和group by组合使用及匿名类型的处理,搜了很多,基本不能满足自己的需要,所以总结了也实现了就自己写出来,已备查看及伙伴查询参考(一般的语句查询就 ...

  5. C# List中写出LINQ类似SQL的语句

    很多时候,从一个关系表中挑出一个我们需要的元素列表采用SQL语句是再容易不过的了,其实C#的List中也可以采用类似的方法,虽然List中集成了Select(), Where()等语句,不过如果你的判 ...

  6. 获取linq生成的sql语句

    命名空间:using System.Data.Objects; var query = db.TxtRes.Join(db.LangRes, a => new { id1 = a.ResID, ...

  7. linq查询时查询语句中附带多个查询时“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”

    主要原因是因为EF采用的 DataReader来进行数据的存储,此时connection使用的是同一个. 例如: list = _tzNewsService.GetAll().Where(w => ...

  8. 请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?

    using dotNET.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generi ...

  9. 打印Linq生成的SQL语句

    var t1 = source.OrderBy<T>(orderby).Skip<T>(_skip).Take<T>(_take); var t2 = t1.ToO ...

随机推荐

  1. [整] JavaScript m选n组合算法

    01转换法: 思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组元素值 ...

  2. 无线路由器的设置_不能通过wifi进行设置

    昨天朋友的小区宽带续费完不能上网了,过去看了一下,无线路由器没有问题,但是宽带信号没过来,网线直接插在电脑上用拨号,发现根本没办法连接,提示网线已经被拔出,重新还原一下系统,也是不行.因为之前他的电脑 ...

  3. 在C#中开启事务

    1.为什么要开启事务: 举一个简单的例子:在银行业务中,有一条记账原则,即又借有贷.为了保证这种原则,每发生一笔银行业务,就必须保证会计账目上借方科目和贷方科目至少个少一笔,并且这两笔要么同时成功,要 ...

  4. Nginx反向代理 负载均衡

    nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 〉另外一个功能就是作为反向代 ...

  5. (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)

    找了相关的资料终于写完了: http://blog.csdn.net/jamin0107/article/details/6973845 和 http://emmet1988.iteye.com/bl ...

  6. Android使用OkHttp实现带进度的上传下载

    先贴上MainActivity.java package cn.edu.zafu.sample; import android.os.Bundle; import android.support.v7 ...

  7. CPU tick counter

    #define rdtscll(val) \ __asm__ __volatile__ ("rdtsc" : "=A" (val)) example #incl ...

  8. 隐藏Nginx/Apache版本号的安全性与方法

    一.先介绍nginx隐藏版本号的方法. 搭建好nginx或者apache,为了安全起见我们都会隐藏他们的版本号,这边讲的是nginx的版本号,如果你也想隐藏apache的版本号,那请点前面的链接.请看 ...

  9. 如何选择Html.RenderPartial和Html.RenderAction

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. Html.RenderPartial是直接将用户控件嵌入到界面上: <%Htm ...

  10. spring无法扫描jar包的问题

    在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容.然而,最近对公司的公共模块进行整理发布后.spring却无法扫描到相应的bean.折腾了好久,最终发现是认识上的误区. 2015-11-1 ...