Aganstrong 2021-04-26 10:32 采纳率: 56.6%
浏览 622
已采纳

C#如何将DataTable高效转成List<Dictionary<string, object>>

C# 如何将DataTable 高效转成List<Dictionary<string, object>>?

Dictionary<string, object>代表一行,string是字段名,object是字段值

不直接使用foreach,封装一个转换的类

  • 写回答

3条回答 默认 最新

  • 码老头 2021-04-30 22:46
    关注

    使用AsEnumerable封装的静态扩展方法,如下:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text.Json;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                DoWork();
            }
    
            static void DoWork()
            {
                var dt = new DataTable();
                dt.Columns.Add("RowId");
                dt.Columns.Add("FirstName");
                dt.Columns.Add("LastName");
                dt.Columns.Add("Quality");
                dt.Rows.Add(1, "Tom", "Hilton", "ABC");
                dt.Rows.Add(1, "Tom", "Hilton", "ABC");
                dt.Rows.Add(3, "Test3", "Sample3", "AWR");
                dt.Rows.Add(4, "Test4", "Sample4", "XYZ");
                dt.Rows.Add(5, "Test5", "Sample5", "BCA");
    
                var list = dt.ConvertToList();
                Console.WriteLine(JsonSerializer.Serialize(list));
            }
        }
    
        public static class DataTableExtension
        {
            public static List<Dictionary<string, string>> ConvertToList(this DataTable dataTable)
            {
                return dataTable.AsEnumerable().Select(
                    row => dataTable.Columns.Cast<DataColumn>().ToDictionary(
                        column => column.ColumnName, // 键
                        column => row[column] as string // 值
                    )
                ).ToList();
            }
        }
    }

    运行结果如下:

     

    我是Rector,码友网的创建者,码友网--一个.NET/.NET Core开发的编程社区。关注码友网,解锁更多.NET&C#开发技巧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来