将IEnumerable <t>转换为List <t> Performance </t> </t>

时间:2012-11-22 09:29:07

标签: c# linq linq-to-sql

我有一个返回List<SampleClass>的网络服务。我使用LINQ-to-SQL作为IEnumerable<SampleClass>.从数据库中获取数据,然后将IEnumerable<SampleClass>转换为List<SampleClass>

LINQ-to-SQL操作性能没问题,但IEnumerable<SampleClass>List<SampleClass>需要一些时间来执行操作。是否有任何解决方案可以从IEnumerable<SampleClass>List<SampleClass>获得最佳效果?

我从我的数据库中读取了超过3000条记录。

谢谢

1 个答案:

答案 0 :(得分:11)

  

IEnumerable to List需要一些时间   操作。

您获得延迟的原因是,当您执行ToList时,这是执行实际查询并从数据库中获取记录的时间。

这称为Deferred execution

var query = db.yourTable.Where(r=> r.ID > 10);
var List = query.ToList(); //this is where the actual query gets executed. 

使用ToListToArrayCount()等迭代查询时,即实际查询执行时。

  

是否有任何解决方案可以获得最佳性能   IEnumerable到List?我读了3000多个   来自我的数据库的记录。

如果不改进查询,不,你不能。但是你真的需要获取3000条记录,你可以使用SkipTake

查看分页