比如linqtosql
1.var products=from p in myDataContext.Products
where p.id<20
select p;
2.products=products.OrderByDescending(o=>o.createTime);
3if(queryParam.ContainsKey("Query_starttime"))
{
products=products.where(o=>o.createTime>=Convert.ToDateTime (queryParam["Query_starttime"]));
}
4foreach(var prodectItem in prodects)
{
console.writeline("商品名称{0}",prodectItem.productName);
}
一.2和3的时候会打开连接数据源吗?会2,3都会去执行一次查询语句来改变products中的数据,还是去修改查询语句,等到4的时候再去打开数据源执行查询语句?
二.如果把1中查询出来的数据ToList()又会有什么不同?
三.对于ef又有什么不同吗?
因为初学所以提出的问题可能本身就有错误,所以请大家多包涵。
一: from p in myDataContext.Products这里有myDataContext.Products实际已经是打开了,并查询结果保存到products里,2和3不会再查询,而是将内存中的products做数据处理,4也不会去打开数据库源,也是从1中已经存到products里的数据做读取。
二:没什么不同,只是2,3里面的排序或筛选要自己重新写过,其最底层操作都是一样的
三: 就读取来说,差别不大
以上答案纯主观分析理解仅做参考
楼上说的有些意思