I have class implemented from IEnumerable<T>
:
public class MyList<T> : IEnumerable<T>
{
IQueryable Queryable;
public MyList(IQueryable ts)
{
Queryable = ts;
}
public IEnumerator<T> GetEnumerator()
{
foreach (var item in Queryable)
{
yield return (T)item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
When I select some property from IQuerable
and do ToList()
, it works:
IQueryable propertiesFromClasses = classesIQuerable.Select(a => a.Property);
MyList<MyClass> classes = new MyList<MyClass>(propertiesFromClasses);
var toListResult = classes.ToList();
Now, I want to select dynamic types:
IQueryable propertiesFromClasses = classesIQuerable.Select(a => new { SelectedProperty = a.Property });
MyList<MyClass> classes = new MyList<MyClass>(propertiesFromClasses);
var toListResult = classes.ToList();
It throws exception in yield return (T)item;
of GetEnumerator()
method:
System.InvalidCastException: 'Unable to cast object of type '<>f__AnonymousType0`1[System.String]' to type 'MyClass'.'