LINQ以及LINQ to Object 和LINQ to Entities
2018-05-02 14:55 Tony、 阅读(864) 评论(0) 编辑 收藏 举报LINQ的全称是Language Integrated Query,中文译成“语言集成查询”,是一种查询技术。
LINQ查询通过提供一种跨各种数据源和数据格式使用数据的一致模型,简化了查询过程。LINQ查询分为对内存对象的查询(LINQ to Object)、对SQL Server数据库的查询(LINQ to SQL)、以及对由ADO.NET实体框架创建的实体集进行查询(LINQ to Entities)等(LINQ to DataSet、LINQ to XML)。
LINQ to Object:继承IEnumerable或IEnumerable<T>接口,无须使用LINQ提供程序或API。所有的操作都是在内存中进行的。
LINQ to SQL:继承IQueryable或IQueryable<T>接口,在LINQ to SQL中,把关系型数据库的数据模型映射到开发人员所用的编程语言表示的对象模型。仅支持sql server 数据库
LINQ to Entities:继承IQueryable或IQueryable<T>接口,LINQ to Entities是Entity Framework的一部分并且取代LINQ to SQL作为在数据库上使用LINQ的标准机制。Entity Framework是行业领先的对象―关系映射(ORM)系统,可以和多种数据库一起使用,并支持各种灵活、复杂的数据模型。LINQ to Entities作为Entity Framework的一部分,它可以使用Entity Framework数据模型来执行LINQ查询。当应用程序运行时,LINQ to Entities会将对象模型中的语言集成查询转换为SQL。然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to Entities会将它们转换回开发人员所用的编程语言处理的对象。
LINQ to Entities的技术原理:程序会把查询表达式先缓存到表达式树中,只有当真正获取数据的时候,才会由IQueryProvider解析表达式树,生成sql语句执行数据库查询操作
LINQ查询表达式分为两种:
一.查询语法:
eg:var query=from b in arr where (b=>b>0) select b
二.查询方法:
eg:var query=arr.where(b=>b>0).select(b=>b)
*查询语法最终被编译成查询方法