我正在尝试为选择编写一个简单的 QueryProvider 并一直失败。这是我的示例查询:
var query = from elem in MyIQueryableImplementation
select new {Name = elem.Name};
紧随其后的是一个 foreach 语句,该语句调用:
public IEnumerator<T> GetEnumerator()
{
return ((IEnumerable<T>)this.provider.Execute(this.expression)).GetEnumerator();
}
哪个调用(暂时忽略表达式树):
public override object Execute(Expression expression)
{
return Exec();
}
进而:
public static IEnumerable<object> Exec()
{
for(int i = 0; i < 10; i++)
{
yield return new {Name = "TEST"};
}
yield break;
}
运行它,它会抛出异常(在 GetEnumerator() 调用中):
Unable to cast object of type '<Exec>d__0' to type 'System.Collections.Generic.IEnumerable`1[<>f__AnonymousType0`1[System.String]]'.
我该如何解决?