为什么我需要再次将DataRow转换为DataRow
本文关键字:DataRow 转换 为什么 | 更新日期: 2024-09-21 00:24:21
查看以下代码块,
DataTable _table = new DataTable();
//1) Why I need to Convert DataRow again into DataRow by Casting ?
List<DataRow> _rows = _table.Rows.Cast<DataRow>().Select(a => a).ToList();
//2) Why this is not valid?
List<DataRow> _rows = _table.Rows.Select(a => a).ToList();
在第一种情况下,为什么我需要再次将DataRow转换为DataRow?为什么第二个案例无效?
DataTable.Rows
的返回类型DataRowCollection
类可以追溯到泛型之前的黑暗时代,因此只实现IEnumerable
而不是IEnumerable<DataRow>
。
您可以使用闪亮的新DataTable.AsEnumerable
LINQ扩展方法,它返回一个IEnumerable<DataRow>
:
List<DataRow> _rows = _table.AsEnumerable().Select(a => a).ToList();
事实上,您根本不需要Select(a => a)
:
List<DataRow> _rows = _table.AsEnumerable().ToList();
PS:有一个Microsoft Connect功能请求,要求DataRowCollection
实现IEnumerable<DataRow>
。然而,由于有一个简单的替代方案(AsEnumerable
),它们可能有其他优先级。