在实体框架中转换为对象时抛出不支持的异常

时间:2015-10-07 16:17:28

标签: c# entity-framework

我正在尝试将过滤后的记录转换为对象。仅在使用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会影响效果。请建议任何其他更好的方式。

1 个答案:

答案 0 :(得分:1)

此处无法转换为对象的原因是因为仍在构造查询并且尚未枚举结果。调用ToList扩展名将强制执行查询,之后您可以将结果强制转换为对象。

我不太确定您要做什么,但您可以尝试将distinctRecords声明为非通用IEnumerable

IEnumerable distinctRecords = filteredRecords.Select(x => provider.GetValue(x, colName));

调用Select也会枚举结果,因此您可以在此之后将结果转换为对象。