C#中将DataTable转化成ListT的方法解析

这篇具有很好参考价值的文章主要介绍了C#中将DataTable转化成ListT的方法解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在C#中,数据的操作是至关重要的一个方面,常常需要将数据从一个形式转换成另一个形式以满足我们的需求。其中,DataTable和List是常见的两种数据形式。DataTable是一种表格形式的数据类型,它以行和列的形式存储数据。List是一种集合类型,它可以存储任意类型的对象,并且可以动态增加或删除元素。在许多情况下,我们需要将DataTable转换成List,以便于进行后续的操作和使用。本文将介绍如何在C#中将DataTable转化成ListT的方法,其中T代表任意需要的类型。

  1. 使用反射

使用反射是将DataTable转换成ListT的一种常见方法。反射是一种与类型相关的编程模型,它允许程序员遍历并操作一个程序集里面的元数据。

1.1 创建一个泛型方法

首先,我们需要在C#中创建一个泛型方法,该方法可以将 DataTable 转换成 List. 泛型方法是一种可以处理任何类型参数的方法。

public static List<T> ConvertDataTableToList<T>(DataTable table) where T : class, new()
{
    List<T> list = new List<T>();

    foreach (DataRow row in table.Rows)
    {
        T obj = new T();
        foreach (PropertyInfo info in obj.GetType().GetProperties())
        {
            if (table.Columns.Contains(info.Name))
            {
                if (row[info.Name] != DBNull.Value)
                {
                    info.SetValue(obj, row[info.Name], null);
                }
            }
        }
        list.Add(obj);
    }
    return list;
}

1.2 将DataTable转换成ListT

然后,我们可以调用上面创建的方法将DataTable转换成ListT。

DataTable table = new DataTable();
//添加列,省略

List<MyClass> list = ConvertDataTableToList<MyClass>(table);
  1. 使用LINQ查询

除了使用反射之外,我们还可以使用LINQ查询将DataTable转换成ListT。LINQ查询是一种强大的查询工具,可以在C# 内部把各种数据转换成查询结果。这里我们要使用DataTable的AsEnumerable方法和LINQ Select方法。

List<MyClass> list = table.AsEnumerable().Select(row =>
        {
            MyClass obj = new MyClass();
            obj.Field1 = row.Field<type>("ColumnName1");
            obj.Field2 = row.Field<type>("ColumnName2");
            obj.Field3 = row.Field<type>("ColumnName3");
            return obj;
        }).ToList();

其中type是你的字段类型,MyClass是你设定的目标类型,在Linq 的Select方法中,我们设置了在遍历每一行时对MyClass中的每一个字段进行赋值。最后将结果转换成一个List类型。

总结:

以上是两种将DataTable转换成ListT的方法,具体各有优劣,可以根据自己的需求选择合适的方法。使用反射可以处理任何类型参数,并且在类型不确定的情况下非常有效,但是在性能上略微低于使用LINQ。而使用LINQ则可以通过语句链轻松处理大量的数据,代码可读性较好。

无论你选择哪一种方法,都需要仔细选择和考虑,在类型和性能方面权衡取舍。文章来源地址https://www.toymoban.com/news/detail-570463.html

到了这里,关于C#中将DataTable转化成ListT的方法解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 在控制台整齐的输出 DataTable

    效果: 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: 效果: 在 Navicat 16 for MySQL 软件中的查询结果 由于没

    2024年02月12日
    浏览(59)
  • 【C#】实体类和DataTable之间相互转换,实体反射动态遍历列

    在实际项目中,经常会用到数据之间的相互转换,序列化和反序列化就是常见场景。这里我们只简单聊聊实体类和DataTable之间的相互转换,可以用于不同业务场景使用。 要将C# DataTable 转换为 Model 实体类,你可以使用反射来获取 DataTable 的列和值,并通过实例化 Model 类来赋值

    2024年02月15日
    浏览(33)
  • C# 将Datatable的数据导出至指定的excel模板案例

           首先说一下需求,用户需要将一个报表的数据导出到指定的excel模板,再将这个excel模板发给客户,客户填写信息后,用户再使用该界面进行导入反写。主要功能为查询、导出、导入与保存。       (1)查询功能,这个就是从数据库中查询数据再显示到gridControl1上,就不

    2024年02月14日
    浏览(31)
  • c# 实现sql查询DataTable数据集 对接SqlSugar ORM

    有时候对于已经查询到的数据集,想要进行二次筛选或者查询,还得再查一遍数据库 或者其他的一些逻辑处理不太方便,就想着为什么不能直接使用sql来查询DataTable呢? 搜索全网没找到可用方案,所以自己实现了一个。 主要实现思路是使用 SQLite In-Memory Database 内存数据库,

    2024年02月12日
    浏览(33)
  • C#获取DataTable的前N行数据然后按指定字段排序

    可以使用以下三种代码: 控制台应用程序FilterDataTableDemo  

    2024年02月11日
    浏览(39)
  • 循环可变化的集合 数组 datatable 等 || c# winfrom DataGridView 动态UI下载功能

          1,使用组件DataGridView 2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型) 3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果设置图片,尽量代码设置 5,DataT

    2024年02月19日
    浏览(40)
  • C#创建DataTable并填充数据,按钮事件实现全选,并到全选的值。wpf开发

    wpf开发中,用事件创建一个datatable度填充到datagird里面,在datagrid里面有第一列是复选框。用一单击事件实现全选,用一个按钮事件得到所选中的值。 Window x:Class=\\\"WpfApp4.MainWindow\\\"         xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\"         xmlns:x=\\\"http://schemas.microsoft.com

    2024年02月08日
    浏览(34)
  • 扩展List<Entity>转化为DataTable

    调用方法:DataTable dt = Service健康体检表.GetList(param).ToDataTable(); public static partial class Extensions     {         public static DataTable ToDataTableT(this IEnumerableT varlist)         {             DataTable dtReturn = new DataTable();             // column names               Propert

    2024年02月01日
    浏览(27)
  • c# winfrom DataGridView 动态UI下载功能(内含GIF图) || 循环可变化的集合 数组 datatable 等

      1,使用组件DataGridView 2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型) 3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果设置图片,尽量代码设置 5,DataTable类型

    2024年02月20日
    浏览(33)
  • C#根据DataTable中的不同值为asp:DataGrid中的不同行或单元格设置不同的颜色

    要根据 DataTable 中的不同值为 asp:DataGrid 中的不同行或单元格设置不同的颜色,可以在服务器端代码中根据数据绑定的时机来动态设置样式。以下是一个示例,演示如何根据 DataTable 中的不同值为 asp:DataGrid 的不同行设置不同的背景颜色 asp:DataGrid ID=\\\"dataGrid\\\" runat=\\\"server\\\" AutoGener

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包