咨询区

  • 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 ?相关推荐

  1. DataTable转换成IList

    本文转载自http://blog.csdn.net/chentaihan/article/details/6407284 作者:陈太汉     在用C#作开发的时候经常要把DataTable转换成IL ...

  2. C#将DataTable转换成list的方法

    本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary> /// 酒店评论列表-分页 /// </summa ...

  3. badatatable转成json_C# DataTable 转换成JSON数据 三种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...

  4. C# 中DataTable转成模型List

    C# 中DataTable转成模型List 引入using System.Reflection; 命名空间 使用注意实体类的属性名必须和DataTable的列名一致 使用: DBList<Sto ...

  5. DataTable转成字符串复制到txt文本的小例子

    自己写了个DataTable转成字符串的方法 复制代码代码如下: public static string DataTableToString(DataTable dt) { string dtstr ...

  6. 简单的反射 把datatable 转换成list对象

    /// <summary>/// 把datatable 转换成list对象/// </summary>/// <typeparam name="T"& ...

  7. ASP.NET把DataTable转成XML文件的函数

    2019独角兽企业重金招聘Python工程师标准>>> 下面我将用ASP.NET把DataTable的数据转成XML格式,并输出生成XML文件.   数据库表position有三个字 ...

  8. list lt t gt java_将DataTable转换成Listlt;Tgt;实现思路及示例代码

    前几天在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List的泛型集合(已知T类型).第一反应,我想肯定要用到"泛型"(这不是废话吗?都说了要转换成Lis ...

  9. DataTable转成List集合

    项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...

最新文章

  1. python序列类型-Python(第八课,序列类型)
  2. C++ QT中namespace使用?
  3. Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
  4. java顺序结构类型,Java类的完整构造执行顺序
  5. ip地址异常判定python_python检测异常ip,并查询ip详细信息
  6. var s=+newDate();的用法,表示对应的时间截
  7. oracle一个表拆成多个表,oracle拆分函数,将字符串拆分成多行多字段表数据
  8. Opencv Camshift对象跟踪
  9. 厘米换算英尺英寸java
  10. 固体发动机内弹道matlab,固体火箭发动机内弹道性能的仿真研究
  11. 51单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验
  12. Jenkin 配置 Gerrit Trigger
  13. 【论文阅读】Automatic Detection of Various Malicious Traffic Using Side Channel Features on TCP Packets
  14. arcgis中的标注和注记
  15. 5-10 列车调度 (25分)
  16. 经过一个周末,又到了周一上班时间
  17. python爬虫+Flask可视化展示
  18. Python 实现Ethernet/IP 通信
  19. 智能驾驶汽车的预期功能安全
  20. H5或Vue跳转微信小程序成功案例

热门文章

  1. 基于Mint UI和MUI开发VUE项目一之环境搭建和首页的实现
  2. Newtonsoft.Json Deserialize Type 或者 同类型 变量 反序列化
  3. fastjson SerializerFeature详解
  4. 我的手机 不支持箭头函数
  5. 设计模式建议学习顺序
  6. android wifi
  7. JavaScript Dom编程艺术
  8. 经典正则表达式(转)
  9. nest 架构_当有人打来您的Nest Hello时,如何让Google Home通知您
  10. 前端工程化:围绕Jenkins打造工作流的过程