1

我正在尝试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,但是当我尝试将其转换时,该类似乎不存在。

4

1 回答 1

1

您不必强制e.Results转换为ObjectView,因为那已经是返回类型。(此外,System.Data.Objects.ObjectView是一个内部类)。但关键是它实现IEnumrable(作为 的一部分IBindingList),而不是IEnuerable<T>.

将非泛型 IEnumerable 转换为泛型的常用方法是以下Cast<T>方法:

var list =  e.Results.Cast<Retailer>();
于 2013-11-08T23:46:20.843 回答