我有一个表达式树项目,与我使用GroupBy语句时的效果很好。对于诸如“Where”和“OrderBy”之类的语句,以下行返回“System.Linq.OrderedEnumerable”
var result = theQueryableSource.Provider.Execute(newExp);
然后,以下行按预期正常工作。
var test = ((IEnumerable<T>) result).GetEnumerator();
如果我使用“GroupBy”语句,第一行代码将返回“System.Linq.GroupedEnumerable”。当第二行运行时,我得到一个例外:
无法转换'System.Linq.GroupedEnumerable`3类型的对象[EntityItemInterfaceClassLib。 ReaderEntityItem,System.Nullable`1 [System.Int32],EntityItemInterfaceClassLib。 ReaderEntityItem]'键入'System.Collections.Generic.IEnumerable`1 [EntityItemInterfaceClassLib。 ReaderEntityItem]”。
任何人都可以建议如何将GroupedEnumerable转换为IEnumerable,或解释出现了什么问题?
答案 0 :(得分:1)
您希望T
中的IEnumerable<T>
期待什么?
GroupedEnumerable<TSource, TKey, TElement>
已经实现了IEnumerable<IGrouping<TKey, TElement>>
。在这种情况下,您会尝试将IEnumerable<IGrouping<TKey, TElement>>
强制转换为(大概)IEnumerable<TSource>
。
GroupedEnumerable<TSource, TKey, TElement, TResult>
已经实现了IEnumerable<TResult>
。在这种情况下,您会尝试将IEnumerable<TResult>
强制转换为(大概)IEnumerable<TSource>
。