我正在尝试像这样抓取数据源Selected
事件的实体
protected void edsRetailer_OnSelected(object sender, EntityDataSourceSelectedEventArgs e)
{
if(e.Results == null) return;
var list = (IEnumerable<Retailer>) e.Results;
}
强制转换失败,并显示以下错误
Unable to cast object of type 'System.Data.Objects.ObjectView`1[CCBusiness.Retailer]' to type 'System.Collections.Generic.IEnumerable`1[CCBusiness.Retailer]'
我尝试将其转换为ObjectView
,但是当我尝试将其转换为该类时,该类似乎不存在。
您不必将e.Results
转换为ObjectView
,因为这已经是返回类型。(此外,System.Data.Objects.ObjectView
是一个内部类)。但关键是它实现了IEnumrable
(作为IBindingList
的一部分),而不是IEnuerable<T>
。
将非泛型 IEnumerable 转换为泛型的常用方法是Cast<T>
方法:
var list = e.Results.Cast<Retailer>();