我正在尝试将过滤后的记录转换为对象。仅在使用Entity Framework时才会抛出不支持的异常。
此代码段在我的应用程序中使用
var filteredRecords = this.SourceCollection.AsQueryable();
IEnumerable<object> distinctRecords = null;
distinctRecords = filteredRecords.Cast<object>().Select(x => provider.GetValue(x, colName)).Distinct();
部分网站建议使用.ToList
代替.Cast
,但使用.ToList
会影响效果。请建议任何其他更好的方式。
答案 0 :(得分:1)
此处无法转换为对象的原因是因为仍在构造查询并且尚未枚举结果。调用ToList
扩展名将强制执行查询,之后您可以将结果强制转换为对象。
我不太确定您要做什么,但您可以尝试将distinctRecords
声明为非通用IEnumerable
:
IEnumerable distinctRecords = filteredRecords.Select(x => provider.GetValue(x, colName));
调用Select
也会枚举结果,因此您可以在此之后将结果转换为对象。