IQueryProvider 执行 IEnumerable 到 EnumerableQuery

IQueryProvider Execute IEnumerable to EnumerableQuery

我创建了一个简单的 IQueryable:

var data = Enumerable.Range(1, 100).Select(i => new TestDto()
{
       Id = i,
}).AsQueryable();

TestDto:

public class TestDto
{
    public int Id { get; set; }
}

在尝试执行以下行时:

var test = data.Provider.Execute(data.Expression);

我收到一个异常说明:

Expression of type 
„System.Collections.Generic.IEnumerable`1[Ilc.Tests.QueryAdapter.TestDto]” 
cannot be used for return type 
„System.Linq.EnumerableQuery`1[Ilc.Tests.QueryAdapter.TestDto]”.

我不明白为什么会出现这个异常。 更奇怪的是,在调试视图中 Visual Studio (断点)IQueryable data 枚举就好了。

试试这个:

 var test = data.Provider.Execute<IEnumerable<TestDto>>(data.Expression);