根据我这几天的学习,对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);