選択用の単純な 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]]'.
これを修正するにはどうすればよいですか?