Entity Framework 4.0之2:简单的LINQ 数据操作(1)
2011-07-25 18:40
176 查看
.NET Language Integrated Query(LINQ)一体化查询语言,是集成在 .NET Framework 3.5 编程语言中的一种新特性,已成为编程语言的一部分,使开发人员可以使用语法基本一致的语句对不同来源不同类型的数据进行查询与整合,它使得查询表达式可以得到很好的编译时语法检查。
一:字符串查询
LINQ多表查询
实际操作起来,用linq进行多表连接比较复杂(特别是在表很多的情况下),建议先将查询内容做成视图,再把视图映射成实体类,这样就可以用单表查询的方式进行查询了。
作者建议:LINQ在做对数据库查询的时候,其实就是对sql的再封装,从而使得操作更加简洁,而且从LINQ解析得到的sql也得到了优化,可能针对某些查询,比没有优化的sql查询效率更高些,所以,如果开发人员追求效率(对数据的增、删、改、查),建议先做存储过程,然后优化,再把这些优化的存储过程在DataContext里面封装成方法,再调用这些方法,这样既可以把sql写的更好,效率又更高,而且还对提高个人的数据库知识水平也有很大帮助。
一:字符串查询
LINQ多表查询
// <1> 查询每个客户下订单的日期 (内连接) var customerLst1 = from s in dc.Customers join p in dc.Orders on s.CustomerID equals p.CustomerID orderby s.CustomerID ascending select new { ID = s.CustomerID, OrderDate = p.OrderDate }; // <2> 查询每个客户下订单的日期 (左外连接) var customerLst2 = from s in dc.Customers join p in dc.Orders on s.CustomerID equals p.CustomerID into sp from a in sp.DefaultIfEmpty() orderby s.CustomerID ascending select new { ID = s.CustomerID, OrderDate = a.OrderDate }; // <3> 查询每个客户下订单的日期,条件:付款大于200且订单日期在1997-12-08以后 (多表条件查询) var customerLst3 = from s in dc.Customers join p in dc.Orders on s.CustomerID equals p.CustomerID where s.Payment >200&& p.OrderDate > DateTime.Parse("1997-12-08") orderby s.CustomerID ascending select new { ID = s.CustomerID, OrderDate = p.OrderDate };
实际操作起来,用linq进行多表连接比较复杂(特别是在表很多的情况下),建议先将查询内容做成视图,再把视图映射成实体类,这样就可以用单表查询的方式进行查询了。
作者建议:LINQ在做对数据库查询的时候,其实就是对sql的再封装,从而使得操作更加简洁,而且从LINQ解析得到的sql也得到了优化,可能针对某些查询,比没有优化的sql查询效率更高些,所以,如果开发人员追求效率(对数据的增、删、改、查),建议先做存储过程,然后优化,再把这些优化的存储过程在DataContext里面封装成方法,再调用这些方法,这样既可以把sql写的更好,效率又更高,而且还对提高个人的数据库知识水平也有很大帮助。
相关文章推荐
- 光脚丫学LINQ(016):创建简单对象模型和LINQ查询(C#)
- LinQ的第一天(老规矩:还是案例分析,从简单到难)
- linq Distinct的一个简单实现方法
- 做梦想起来的C#简单实现贪吃蛇程序(LinQ + Entity)
- 简单的EJB开发实例,JBOSS4.0+ECLIPSE3.1
- Linq 读取简单的XML数据
- AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口
- 简单测试lambda和linq查找的性能
- Linq to Sql简单学习
- linq to access 简单实现 实例demo
- 简单的linq语法
- Asp.Net使用LinQ读取Null值字段读不出数据的最简单调试方法!
- 享受LINQ:判断一组文字是否在字符串中同时出现的最简单方法
- 无IDP(免99刀)在iphone SDK 4.0上真机调试的简单方法
- 如何将linq查询的结果 转换为DataTable,最简单的实现方法
- 4.0 第十一章 Linq
- 可靠简单的 解决Microsoft.Jet.OLEDB.4.0 不能在64位系统下使用的问题
- NHibernate初学二之简单执行SQL及HQL、Linq
- 随便:LINQ OVER DataSet和ADO.NET的简单例子
- asp.net MVC + linq to Entity简单教程(三)linq to Entity的基本操作