我想为选择编写一个简单的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