查看下面的代码块,
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?为什么第二种情况无效?
发布于 2013-12-13 06:01:53
DataTable.Rows的返回类型DataRowCollection类可以追溯到泛型之前的旧的黑暗时期,因此,只实现IEnumerable而不是IEnumerable<DataRow>。
您可以使用闪亮的新LINQ延拓法代替,它返回一个IEnumerable<DataRow>
List<DataRow> _rows = _table.AsEnumerable().Select(a => a).ToList();实际上,您根本不需要Select(a => a):
List<DataRow> _rows = _table.AsEnumerable().ToList();PS:有一个Microsoft功能请求使DataRowCollection实现IEnumerable<DataRow>。但是,由于有一个简单的替代方案(AsEnumerable),它们可能有其他优先级。
https://stackoverflow.com/questions/20560050
复制相似问题