将 DataTable 转换为 IEnumerable

2024-03-22

我正在尝试将 DataTable 转换为 IEnumerable。其中 T 是我创建的自定义类型。我知道我可以通过创建一个List<T>但我在想是否有一种更灵活的方法可以使用 IEnumerable 来做到这一点。这是我现在所拥有的:

private IEnumerable<TankReading> ConvertToTankReadings(DataTable dataTable)
{
    var tankReadings = new List<TankReading>();
    foreach (DataRow row in dataTable.Rows)
    {
        var tankReading = 
              new TankReading
              {
                  TankReadingsID = Convert.ToInt32(row["TRReadingsID"]),
                  TankID = Convert.ToInt32(row["TankID"]),
                  ReadingDateTime = Convert.ToDateTime(row["ReadingDateTime"]),
                  ReadingFeet = Convert.ToInt32(row["ReadingFeet"]),
                  ReadingInches = Convert.ToInt32(row["ReadingInches"]),
                  MaterialNumber = row["MaterialNumber"].ToString(),
                  EnteredBy = row["EnteredBy"].ToString(),
                  ReadingPounds = Convert.ToDecimal(row["ReadingPounds"]),
                  MaterialID = Convert.ToInt32(row["MaterialID"]),
                  Submitted = Convert.ToBoolean(row["Submitted"]),
              };

        tankReadings.Add(tankReading);
    }
    return tankReadings.AsEnumerable();
}

关键部分是我正在创建一个List<T>然后使用返回它AsEnumerable().


还有一个名为“AsEnumerable()”(在 System.Data 中)的 DataSetExtension 方法,它接受 DataTable 并返回 Enumerable。看MSDN 文档 http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable.aspx了解更多详细信息,但基本上很简单:

dataTable.AsEnumerable()

缺点是它枚举 DataRow,而不是您的自定义类。 “Select()”LINQ 调用可以转换行数据,但是:

private IEnumerable<TankReading> ConvertToTankReadings(DataTable dataTable)
{
    return dataTable.AsEnumerable().Select(row => new TankReading      
            {      
                TankReadingsID = Convert.ToInt32(row["TRReadingsID"]),      
                TankID = Convert.ToInt32(row["TankID"]),      
                ReadingDateTime = Convert.ToDateTime(row["ReadingDateTime"]),      
                ReadingFeet = Convert.ToInt32(row["ReadingFeet"]),      
                ReadingInches = Convert.ToInt32(row["ReadingInches"]),      
                MaterialNumber = row["MaterialNumber"].ToString(),      
                EnteredBy = row["EnteredBy"].ToString(),      
                ReadingPounds = Convert.ToDecimal(row["ReadingPounds"]),      
                MaterialID = Convert.ToInt32(row["MaterialID"]),      
                Submitted = Convert.ToBoolean(row["Submitted"]),      
            });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 DataTable 转换为 IEnumerable 的相关文章

随机推荐

  • 静态多态性定义和实现[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对这个概念有一些疑问静态多态性我有时听说 您可能主要在 C 上下文中解释它们 但我希望在适用的情况下提供与语言无关的答案 因此标记
  • 新的空 iOS 应用程序存在数十处内存泄漏

    在一款新的 从头开始的单视图 iOS 应用程序上使用 Leaks Instruments 工具报告了 23 起泄漏 这似乎不对 我错过了什么吗 重复运行会产生不同的泄漏计数 从 16 到 35 重现步骤遵循此屏幕截图 类似的未回答的问题发布
  • 绘制一个矩形 google.maps.Polygon 给定其中心点和尺寸

    我正在编写一个 PHP 脚本 它接受 XML 输入 解析它 然后显示 最终旋转 矩形和椭圆区域 因为区域可以旋转 所以我必须使用google maps Polygon并不是Rectangle 为了处理旋转我希望使用谷歌地图多边形旋转 htt
  • 如何以编程方式从 spring-boot-actuator 获取指标?

    我们在生产中有一个弹簧应用程序 它不是 Spring boot 我发现这个帖子 https stackoverflow com questions 26913087 use spring boot actuator without a sp
  • 我可以在 Node 中执行字符串命令吗?

    如果我构造一个存储在字符串变量中的函数或命令列表 有没有办法可以在节点中执行它们并保留另一个变量中返回的内容 IE var result executeMyCoolStringCommands myStringVariableWithCom
  • Phonegap数据库问题-在数据库中存储图像

    我正在尝试使用以下选项制作一个非常基本的库存应用程序 添加库存中物品的照片 我已拥有一切 除了照片部分外正在工作 我看过这个 http phonegap pbworks com iPhone 3A Camera API http phone
  • 如何让Gedit看起来像Textmate?

    我想让 Gedit 看起来像 Textmate 并且行为也像它 我在网上阅读了很多教程 但找不到易于遵循的指南 我正在使用 Ubuntu 11 04 并希望将其用于 Ruby on Rails 和其他网络语言 我只想要核心功能 例如类 项目
  • 如何从 Docker 控制 fluidd 日志标签

    当前设置正在运行 Docker 容器fluentd driver docker run log driver fluentd my container 这工作起来很容易 将标准输出发送到主机上本地运行的 Fluentd 系统 我想控制流利t
  • MapStruct - @Mapper 注释不创建 bean

    我从此来源下载了应用程序https github com springframeworkguru spring5 mvc rest tree vendor api https github com springframeworkguru s
  • Bootstrap 5 有内置水平线吗?

    我正在寻找样式或彩色水平线 最好有成功 主要 警告类别 类似的概念彩色链接 https getbootstrap com docs 5 0 helpers colored links 我在 Bootstrap 的网站上找不到这个主题 我找到
  • 如何使用 jest/enzyme 中的“current”属性测试 useRef

    我希望有人能指出我正确的测试方向useRef在下面的组件中 我有一个类似于下面的组件结构 我正在尝试测试其中的功能otherFunction 但我不确定如何模拟组件引用中的当前属性 以前有人做过这样的事情吗 const Component
  • 应用内购买从服务器检索信息时出错 [DF-AA-20]

    我正在尝试启用应用程序计费 我已经在我的 Google Play 控制台上创建了应用内产品并获得了我的许可证密钥 当我尝试购买产品时 我收到此图像错误 这是我用来创建 BillingProcessor 的代码 bp new BillingP
  • “或”和||之间的区别在鲁比? [复制]

    这个问题在这里已经有答案了 两者有什么区别or and Ruby 中的运算符 或者这只是偏好 这是一个运算符优先级的问题 优先级高于or 因此 在两者之间还有其他运算符 包括三元 和赋值 因此您选择哪一个会影响语句的结果 这是一个ruby
  • python 中复杂的类似 matlab 的数据结构 (numpy/scipy)

    我目前在 Matlab 中的数据结构如下 item i attribute1 2 j 其中 item 是 i 1 n 中的一个单元格 每个单元格包含多个属性的数据结构 每个属性的大小为 2 j 的矩阵 其中 j 1 m 属性的数量不固定 我
  • Karma - 包含 html 文件时出现意外标记

    我试图在我的 karma 配置文件中包含一个简单的 html 文件 以访问我的 javascript 文件中的 html 元素 并使用 karma 中的 jasmine 进行测试 但我总是得到一个意外令牌 错误 我在网络广播中看到可以包含
  • JEST + React 测试库:我应该在测试之前使用 beforeAll 渲染我的组件吗?

    正如标题所示 我正在使用 RTL Jest 使用 Create react app 设置 我的问题是 我是否应该在每个测试中使用 beforeAll 来预渲染该块中的组件 这样每个测试就不必从头开始重新渲染组件 因为我的测试套件始终从相同的
  • 给定一组 GraphQL 变量类型,是否可以使用客户端模式为该组中的每种类型创建所有有效值的映射

    标题主要说明了一切 我正在构建一个反应 中继应用程序 它将允许用户在运行时动态创建图表 显示指定时间范围内的各种收入流 该图表的一个特点是用户能够指定每个收入流的采样间隔 例如 YEAR QUARTER MONTH WEEK等 作为每个流的
  • 无法启动动物园管理员

    我正在使用合流平台 zookeeper 处于活动状态查找状态 但是当我尝试用 confluence 启动 kafka 时 它显示 Zookeeper 已关闭 sudo service zookeeper status Redirecting
  • Phonegap、Cordova 观察位置每 1 秒成功发射一次

    平台 iOS6 OSx Lion 我试图弄清楚 Phonegap Cordova 的工作方式navigator geolocation watchPosition 文档说该选项 maximumAge 是要求系统检索位置的一个 因此 有了这些
  • 将 DataTable 转换为 IEnumerable

    我正在尝试将 DataTable 转换为 IEnumerable 其中 T 是我创建的自定义类型 我知道我可以通过创建一个List