博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

新公司,新项目,我采用了新技术-linq-初识理解篇

Posted on 2009-04-07 09:33  losingrose  阅读(246)  评论(0编辑  收藏  举报

根据我这几天的学习,对linq的设计和使用有了一个大体上的理解(好久没摸技术的说,年后一直失业在家打WOW):

linq的实质:
linq实质封装的是一种查询操作类,常见的接口有IQueryable,IEnumerable,IOrderedQueryable,IOrderedEnumerable,其本身var的对象并非是实体而是操作类接口。
如果在程序中要得到实体,需要使用方法ToList,返回得到System.Collections.Generic.List<T> 泛型对象,

相关方法可以参阅此类,虽然提示中还兼容了linq类方法,但已变化了,这点要注意,一定要参考System.Collections.Generic.List<T>类的成员后调用。

很奇怪,泛型居然不是真正的非类型化,而是必须指定<实体类型>的,不知道linq是否能实现非类型化dataset的方法,如果做不到,那这点就成缺憾了。

下面是了解的一些技巧:

一.linq查询采用的参数传递都是使用格式化字符串的方式:

1.ExecuteCommand("DELETE FROM Products WHERE ProductID = {0}", 5);

2.string sql = "DELETE FROM Products WHERE ProductID = {0}";
object[] prams = new object[1];
prams[0] = ProductID";
ExecuteCommand(sql, prams);

 

二.如果你要把LINQ取回的数据缓存可以使用 ToList 方法将数据持久化 - 也就是放在内存中。

List<System_Area> Area = (from area in dc.System_Area
                                      orderby area.SyAr_Id
                                      select area).ToList();

之后从里面筛选数据用

System_Area a = Area.Find(x => x.SyAr_Id == SyAr_Id);