LINQ Select会影响性能吗?

时间:2017-06-22 10:13:59

标签: c# performance linq

假设我有一个对象列表的对象,它有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个属性。 第二个列表中的遍历会比第一个列表更快吗?或者会是一样的吗?请赐教。感谢。

1 个答案:

答案 0 :(得分:2)

你的Linq语句被翻译成SQL - 就像这样

select brand, userId from myTable where Brand == "Ford"

如果省略Linq语句中的投影,则会发出以下sql:

select * from myTable where Brand == "Ford"

这会从表中返回所有列。因此,在这种情况下,指定返回列的速度应该比仅省略投影更快。

编辑:但遍历ResultSet中的一个元素到下一个元素的性能不应该产生很大的影响,更大的是数据的实际大小从数据库中取出。