博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq和泛型,IEnumerable和IQueryable之间的区别,Lambda表达式,Linq to Sql停止开发转为 Entity Framework...
阅读量:6185 次
发布时间:2019-06-21

本文共 2406 字,大约阅读时间需要 8 分钟。

一:LINQ 查询基于泛型类型,在  Framework 的 2.0 版中引入了泛型类型。 您无需深入了解泛型即可开始编写查询。 但是,您可能需要了解两个基本概念:

  1. 当您创建泛型集合类(如  )的实例时,您将“T”替换为列表将包含的对象的类型。 例如,字符串列表表示为 List<string>,Customer 对象列表表示为 List<Customer>。 泛型列表是强类型的,且提供了比将其元素存储为  的集合更多的好处。 如果您尝试将 Customer 添加到 List<string>,则会在编译时出现一条错误。 泛型集合易于使用的原因是您不必执行运行时类型强制转换。

  2.  是一个接口,通过该接口,可以使用 foreach 语句来枚举泛型集合类。 泛型集合类支持  ,就像非泛型集合类(如 )支持 。

 

 

二:numerable<T>和IQueryable<T>之间的区别

都是代表泛型的集合,但是 IEnumerable<T> 指的是 本地的可列举的集合。Linq 2 Object 例如

List
persons = new List
//这里就是 集合初始化 { new person{Age=10,Name="joey",sex="男"}, //对象初始化 new person {Age=20,Name="etam",sex="女"}, new person {Age=30,Name="eric",sex="男"}, new person{Age=10,Name="king",sex="男"} };

当我们不知道要查找什么类型的时候,可以使用 var

IEnumerable
p = from per in persons where per.Name[0] == 'e' select per; var p2= from per2 in persons where per2.Name[0]=='e' select per2; foreach (var a in p) { Response.Write(a.Age +" 名字是"+a.Name+"
"); } foreach (var a in p2) { Response.Write(a.Age +" 名字是"+a.Name+"
"); }

 

而 IQueryable<T> 指的是  远程的查询  Linq 2 

IEnumerable<T>  也即是 Linq 2 Object  将存放在内存中.

IQueryable<T>     也既是 Linq 2 Sql  则是把数据存放在远程的中. 这个是延迟执行的

 

三:Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 )的参数,注意看是参数

List
fruits = new List
{ "apple", "passionfruit", "banana", "mango", "orange", "blueberry", "grape", "strawberry" }; IEnumerable
query = fruits.Where(fruit => fruit.Length < 6); foreach (string fruit in query) { Console.WriteLine(fruit); } /* This code produces the following output: apple mango grape */

“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。

所有 Lambda 表达式都使用 Lambda 运算符 ,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x 读作“x goes to x times x”。

 

Lambda表达式是对.2.0中匿名方法在语法形式上的进一步改进,仍然以代码说明:

var inString = list.FindAll(delegate(string s) { return s.Indexof("YJingLee") >= 0; });
使用Lambda表达式代码将更自然易懂。
var inString = list.FindAll(s => s.Indexof("YJingLee") >= 0);
可以看出,Lambda表达式格式为:(参数列表)=>表达式或语句块 

 

Linq to sql  好像停止开发了。如果要使用 Linq to Sql  还需要先弄一个  对象关系设计器(O/R 设计器),这样才可以把演示的 Northwnd 映射出来

搞出来了Linq之后,为了演示和体现一下Linq这个东西能干点啥,C#就做了一个东西叫作 Linq To SQL ,它是一个轻量级 ORM 工具。

再然后,这个东西就从 C# 团队移交给 ADO.NET 团队了。ADO.NET 决定要做一个更大的工具,就是 Entity Framework,就停止了Linq  To Sql 的继续开发,当然目前仍有很多人在用Linq to SQL。

但是linq还是很强大的,连一个数组都可以用linq来查。现在是在 Entity Framework 里面 使用 Linq

转载于:https://www.cnblogs.com/zhangchenliang/archive/2012/12/10/2810851.html

你可能感兴趣的文章
OpenStack对象存储——Swift
查看>>
Java NIO学习笔记之二-图解ByteBuffer
查看>>
设置ll和ls -l命令中显示的日期格式
查看>>
嵌入式研发人员的核心竞争力浅谈
查看>>
liferay文档库重新部署后无法下载问题
查看>>
使用rand替换random模块
查看>>
JQuery ztree 异步加载实践
查看>>
Android电话系统之概述篇
查看>>
[转]主题:我们应当怎样做需求分析
查看>>
jdbc分页
查看>>
[Android] Android中WIFI开发总结二
查看>>
[Android] Android进程与线程基本知识
查看>>
如何做好一个项目经理
查看>>
Tex之版面布局设计
查看>>
java.lang.ArrayIndexOutOfBoundsException: 17
查看>>
一个开源,用mongoDB做日志,直接嵌入log4j
查看>>
开发者有用的CSS片段
查看>>
Android调用系统照相机拍摄视频并将其拷贝到制定的文件夹下
查看>>
electron 跨域问题 六
查看>>
Android系统性能调优工具介绍
查看>>