我知道IQueryable和IEnumerable之间的区别,我知道Linq To Objects通过IEnumerable接口支持集合.
令我困惑的是,当集合转换为IQueryable时,查询的执行速度是原来的两倍.
设l是List类型的填充对象,如果列表l通过l.AsQueryable()转换为IQueryable,则linq查询的速度是两倍.
我用VS2010SP1和.NET 4.0编写了一个简单的测试来演示:
private void Test()
{
const int numTests = 1;
const int size = 1000 * 1000;
var l = new List<int>();
var resTimesEnumerable = new List<long>();
var resTimesQueryable = new List<long>();
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
for ( int x=0; x<size; x++ )
{
l.Add( x );
}
Console.WriteLine( "Testdata size: {0} numbers", size );
Console.WriteLine( "Testdata iterations: {0}", numTests );
for ( …
Run Code Online (Sandbox Code Playgroud)