我想爲選擇編寫一個簡單的QueryProvider並保持失敗。這是我的示例查詢:LINQ 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;
}
Ru它會拋出異常(在GetEnumerator()調用中):
Unable to cast object of type '<Exec>d__0' to type 'System.Collections.Generic.IEnumerable`1[<>f__AnonymousType0`1[System.String]]'.
如何解決此問題?
是Exec和在不同的組件查詢? – usr
當你只是返回字符串而不是匿名類型時它工作嗎? – Rik