Pab*_*ind 7 c# linq asp.net ado.net entity-framework
我正在创建一个控件,在数据源中接收DataSet或List
我如何在CreateChildControls事件中将IEnumerable转换为List?
protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)
{
if (dataSource is System.Data.DataSet)
{
}
else if(dataSource is IList)
{
}
}
Run Code Online (Sandbox Code Playgroud)
bit*_*onk 13
通常会使用IEnumerable<T>.ToList()Linq 的扩展方法,但在你的情况下,你不能使用它(马上),因为你有非泛型IEnumerable接口.你必须首先施放它(也使用Linq):
datasource.Cast<object>().ToList();
Run Code Online (Sandbox Code Playgroud)
无论你原来的收藏是什么,这都会成功.
我重新阅读了您的问题,似乎您正在接收一个数据集,该数据集是ALREADY列表或DataSet,但它被转换为IEnumerable.在这种情况下,干脆做
IList myList = (IList)datasource //will throw exception if invalid
Run Code Online (Sandbox Code Playgroud)
要么
IList myList = datasource as IList //mylist will be null if conversion cannot be made
Run Code Online (Sandbox Code Playgroud)