NET问答: 如何将 DataTable 转成 IEnumerableT ?
咨询区
Roddy Balkan:
我想将一个外域系统中传过来的 DataTable
转成 IEnumerable
,下面的代码在 ASP.NET 4.6.1
中是没有问题的。
public static IEnumerable<UserAssignmentDto> StaffAssignmentsUsingStoredProcedure(System.Data.DataTable dataTable){var data = dataTable.AsEnumerable().Select(row =>new UserAssignmentDto{Id = ((string)row["AssignmentNumber"]),Position = (string) row["EsrPositionTitle"],});return data;}
但是 ASP.NET Core
中 DataTable 的扩展方法 AsEnumerable
已经被拿掉了,这就很尴尬了,请问现在我还有什么高效的方式将 DataTable
转成我需要的 IEnumerable
呢?
回答区
Brian Ogden:
在 ASP.NET Core
中你只能自己通过 for 循环迭代,因为在 .NET Core
中并没有实现 IEnumerable
接口,所以你使用不了 Linq 和 Foreach, 可参考如下代码:
public static IEnumerable<UserAssignmentDto> StaffAssignmentsUsingStoredProcedure(System.Data.DataTable dataTable)
{var retList = new List<UserAssignmentDto>();for(int i = 0; i < dataTable.Rows.Count; i++){var row = dataTable.Rows[i];var temp = new UserAssignmentDto(){Id = row["AssignmentNumber"],Position = row["EsrPositionTitle"]};retList.Add(temp); }return retList;
}
N.Y:
并没有比 for 更高效的处理方式,当然你可以使用原生的 Select
进行过滤。
DataRow[] rows= dataTable.Select();
我还封装了一个扩展方法,或许能够帮到你。
public static List<T> ConvertDataTableToGenericList<T>(DataTable dt)
{var columnNames = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList();var properties = typeof(T).GetProperties();DataRow[] rows= dt.Select();return rows.Select(row =>{var objT = Activator.CreateInstance<T>();foreach (var pro in properties){if (columnNames.Contains(pro.Name))pro.SetValue(objT, row[pro.Name]);}return objT;}).ToList();
}
点评区
虽然 .NET Core
对 DataTable 已经很不友好了,但实际场景下总有这样的需求,使用上面提供的扩展方法挺好的,学习了。
NET问答: 如何将 DataTable 转成 IEnumerableT ?相关推荐
- DataTable转换成IList
本文转载自http://blog.csdn.net/chentaihan/article/details/6407284 作者:陈太汉 在用C#作开发的时候经常要把DataTable转换成IL ...
- C#将DataTable转换成list的方法
本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary> /// 酒店评论列表-分页 /// </summa ...
- badatatable转成json_C# DataTable 转换成JSON数据 三种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...
- C# 中DataTable转成模型List
C# 中DataTable转成模型List 引入using System.Reflection; 命名空间 使用注意实体类的属性名必须和DataTable的列名一致 使用: DBList<Sto ...
- DataTable转成字符串复制到txt文本的小例子
自己写了个DataTable转成字符串的方法 复制代码代码如下: public static string DataTableToString(DataTable dt) { string dtstr ...
- 简单的反射 把datatable 转换成list对象
/// <summary>/// 把datatable 转换成list对象/// </summary>/// <typeparam name="T"& ...
- ASP.NET把DataTable转成XML文件的函数
2019独角兽企业重金招聘Python工程师标准>>> 下面我将用ASP.NET把DataTable的数据转成XML格式,并输出生成XML文件. 数据库表position有三个字 ...
- list lt t gt java_将DataTable转换成Listlt;Tgt;实现思路及示例代码
前几天在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型).第一反应,我想肯定要用到"泛型"(这不是废话吗?都说了要转换成Lis ...
- DataTable转成List集合
项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...
最新文章
- python序列类型-Python(第八课,序列类型)
- C++ QT中namespace使用?
- Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
- java顺序结构类型,Java类的完整构造执行顺序
- ip地址异常判定python_python检测异常ip,并查询ip详细信息
- var s=+newDate();的用法,表示对应的时间截
- oracle一个表拆成多个表,oracle拆分函数,将字符串拆分成多行多字段表数据
- Opencv Camshift对象跟踪
- 厘米换算英尺英寸java
- 固体发动机内弹道matlab,固体火箭发动机内弹道性能的仿真研究
- 51单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验
- Jenkin 配置 Gerrit Trigger
- 【论文阅读】Automatic Detection of Various Malicious Traffic Using Side Channel Features on TCP Packets
- arcgis中的标注和注记
- 5-10 列车调度 (25分)
- 经过一个周末,又到了周一上班时间
- python爬虫+Flask可视化展示
- Python 实现Ethernet/IP 通信
- 智能驾驶汽车的预期功能安全
- H5或Vue跳转微信小程序成功案例