假设我有一个对象列表的对象,它有30个属性,如下所示:
List<myObject> objectList = db.myObject.Where(x => x.Brand == "Ford").ToList();
objectList有大约250k成员。
如果我只从db获得两个属性并制作如下列表:
List<myObject2> objectList2 = (from x in db.myObject
where x.Brand == "Ford"
select new myObject2 {Brand = x.Brand, userId = x.userId}).ToList();
此列表也有250k成员,但此列表中的对象有2个属性。 第二个列表中的遍历会比第一个列表更快吗?或者会是一样的吗?请赐教。感谢。
答案 0 :(得分:2)
你的Linq语句被翻译成SQL - 就像这样
select brand, userId from myTable where Brand == "Ford"
如果省略Linq语句中的投影,则会发出以下sql:
select * from myTable where Brand == "Ford"
这会从表中返回所有列。因此,在这种情况下,指定返回列的速度应该比仅省略投影更快。
编辑:但遍历从ResultSet
中的一个元素到下一个元素的性能不应该产生很大的影响,更大的是数据的实际大小从数据库中取出。