2015-10-07 26 views
0

我試圖將篩選的記錄轉換爲對象。不支持的異常僅在使用實體框架時拋出。在實體框架中投射對象時拋出不支持的異常

這段代碼是在我的應用程序

var filteredRecords = this.SourceCollection.AsQueryable(); 
IEnumerable<object> distinctRecords = null; 
distinctRecords = filteredRecords.Cast<object>().Select(x => provider.GetValue(x, colName)).Distinct(); 

使用一些網站建議使用.ToList代替.Cast,但使用.ToList會影響性能。請建議其他更好的方法。

+0

你能提供拋出異常的更多細節嗎? – MikeH

+0

用'.AsEnumerable()'help替換'.Cast ()'? –

+0

不支持異常。無法將類型'Order_detail'強制轉換爲鍵入'object'。 LINQ to Entities僅支持投射EDM基元或枚舉類型。 – User

回答

1

您無法轉換爲對象的原因是因爲查詢仍在構建中,並且結果尚未枚舉。調用ToList擴展將強制執行查詢,之後您將能夠將結果轉換爲對象。

我不太清楚你想要做什麼,而是你可以嘗試聲明distinctRecords作爲非通用IEnumerable代替:

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

調用Select還會枚舉的結果,所以你可以只需將結果投射到一個對象之後。

相關問題