ToList,count 一些请教
LIQN TO SQL的模型类搭建好后,子级关系也有了。
当查询父表的时候,
ToList-----
比如一个简单的 查询订单集合语句
sqlHelpler.EC.Orders.ToList();
他得到的结果是 父表的全部数据,子表的全部数据。而某些地方的查询只需要 得到主要的某几个字段而已,不需要得到子表中那么庞大的数据,这种情况我怎么来查?
比如 我要的结果只查 sleect id from orders 就可以, 而不用select *from orders 或者在join到子表去了。
count ---
我要得到 select count(id) from orders 这样一句话的执行代码,用LINQ是如何写的?
sqlHelpler.EC.Orders.ToList().Count() 和sqlHelpler.EC.Orders.ToList().Count
执行的是先查全部数据,在查集合数量跟 直接一个count sql语句的效率差了千万倍。
才学linq也不久,网上也查不到这些疑问,顾来请教
------解决方案--------------------呵呵,说到这,我都弄不清你现在是要实现什么目的了。是要返回指定ID的Order?还是返回所有Order的ID总数?
目前Entity模型下,LINQ to SQL同样是生成SQL查询语句来进行的,这个可以设置DataContext.Log属性来观察生成的SQL查询语句,所以这个开销,和你直接用ADO.NET对象的开销相比,也不见得有劣势。而且语义表达上更直观。
你的SQL查询:select count(Id) from orders与LINQ的 Orders.Count(o=>o.Id)可以视作等价的。
我最近也在学习LINQ to SQL。 我一直设置DataContext.Log = Console.Out; 就是看它生成什么样的SQL查询语句,再来加深理解。
希望以上对你有所帮助。
------解决方案--------------------C# code
List<int> list = db.Orders.Select(o => o.OrderID).ToList<int>();
------解决方案--------------------
------解决方案--------------------