您的位置:首页 > 其它

Entity Framework 4.0之2:简单的LINQ 数据操作(1)

2011-07-25 18:40 176 查看
  .NET Language Integrated Query(LINQ)一体化查询语言,是集成在 .NET Framework 3.5 编程语言中的一种新特性,已成为编程语言的一部分,使开发人员可以使用语法基本一致的语句对不同来源不同类型的数据进行查询与整合,它使得查询表达式可以得到很好的编译时语法检查。

一:字符串查询

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写的更好,效率又更高,而且还对提高个人的数据库知识水平也有很大帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: