C# select列的数量会影响linq查询的效率吗?

C# select列的数量会影响linq查询的效率吗?,c#,linq,C#,Linq,根据这篇文章 我们应该避免为sql选择* 这是否也适用于linq查询 编辑: 从中选择*作为linq,我的意思是 from a in mytable select a; 我的意思是从选定的专栏中 from a in mytable select new{a.Prop1, a.Prop2}; LINQ查询,如果在数据集或集合上执行,则在内存中发生。由于DB将数据存储在硬盘驱动器中,所以影响并没有DB级别那么大 由于RAM的速度比HDD快,因此性能并不明显。但是,如果在内存中的数据集或集合上执

根据这篇文章

我们应该避免为sql选择*

这是否也适用于linq查询

编辑:

中选择*
作为linq,我的意思是

from a in mytable select a;
我的意思是从选定的专栏中

from a in mytable select new{a.Prop1, a.Prop2};

LINQ查询,如果在数据集或集合上执行,则在内存中发生。由于DB将数据存储在硬盘驱动器中,所以影响并没有DB级别那么大


由于RAM的速度比HDD快,因此性能并不明显。但是,如果在内存中的数据集或集合上执行LINQ查询,那么将其应用于LINQ也是一个不错的主意。由于DB将数据存储在硬盘驱动器中,所以影响并没有DB级别那么大


由于RAM的速度比HDD快,因此性能并不明显。但是将其应用于LINQ仍然不是一个坏主意

您不能用LINQ执行
SELECT*
。生成的查询始终具有要选择的所有列名。所以,读取表的定义以确定该表的列不会导致延迟。但从磁盘读取所有列数据和通过网络发送数据时会有延迟。所以,若您只需要表中的几列,那个么最好只选择这些列:

var query = from p in db.Person
            select new { p.Id, p.Forename, p.Surname };

备注:使用Linq to Object(内存查询)时,情况正好相反——内存中已经有了对象。选择属性集比较慢,因为应该创建匿名对象,并且应该映射它的属性。但此操作不使用硬盘驱动器或网络,因此延迟无关紧要。

您无法使用LINQ执行
选择*
。生成的查询始终具有要选择的所有列名。所以,读取表的定义以确定该表的列不会导致延迟。但从磁盘读取所有列数据和通过网络发送数据时会有延迟。所以,若您只需要表中的几列,那个么最好只选择这些列:

var query = from p in db.Person
            select new { p.Id, p.Forename, p.Surname };

备注:使用Linq to Object(内存查询)时,情况正好相反——内存中已经有了对象。选择属性集比较慢,因为应该创建匿名对象,并且应该映射它的属性。但此操作不使用硬盘驱动器或网络,因此延迟无关紧要。

他的意思是选择所有列而不是所需的列。他的意思是选择所有列而不是所需的列。OP只询问对象的Linq。OP只询问对象的Linq