Linq(2)
解决的问题
1。阻抗失调:数据!=对象
2。 ORM
管道技术:是指通过标准输出输入流,将一系列的进程连接起来,这样一个进程的输出就直接传递给下一个进程的输入中。
Linq的核心技术
1。 序列:只所有实现了IEnumerable<T>接口的对象。
2。 迭代器:C#中的迭代器的行为非常特殊,每次只返回一个数据,这样可以节省内存,并可以立刻处理集合中的数据。
.net 迭代器是一种轻量级的协同程序,除非某个程序包括yeild return,否则都是子程序。
那么在Linq,操作链处理过程中是如何处理的呢?
性能问题
由于使用Linq的大多数操作都是要遍历集合,所以必须要注意性能,尽量只遍历一次。
所以推荐的做法是,要灵活使用Linq,必要的时候自定义查询操作,这样:
用linq的方法编写所有的代码,而将优化封装到自定义的查询操作符中。
Linq的代价
由于linq需要依赖一些额外的对象,导致linq的执行效率非常依赖于要执行的查询,导致效率下降。
Linq 还是 传统的Foreach
1。 Linq 使用声明式的方法,描述了所期望的结果,对应具体的实现过程不在意。
2。 传统的版本使用命令式方法,详细的给出了执行的完整步骤。
3. linq更容易编写,更易阅读,更容易维护,但是不同的实现方式对性能影响更大,当然有可能好于传统的方式。
4。 foreach方式,会导致代码越来越复杂,不易阅读。