zoukankan      html  css  js  c++  java
  • 把DataTable转换为泛型List<T>或是JSON

    在开发ASP.NET Web API或ASP.NET MVC时,我们从数据库得到的数据往往是DataSet或是DataTable。为了能让前端JQuery能方便使用至这些数据,我们需要把这些数据转换为泛型List<T>或是JSON。

    Insus.NET有把这个转换功能写成一个扩展方法:


    方法源代码:

     public static List<T> ToList<T>(this DataTable dt)
            {
                var columnNames = dt.Columns.Cast<DataColumn>()
                    .Select(c => c.ColumnName)
                    .ToList();
    
                var properties = typeof(T).GetProperties();
    
                return dt.AsEnumerable().Select(row =>
                {
                    var objT = Activator.CreateInstance<T>();
    
                    foreach (var pro in properties)
                    {
                        if (columnNames.Contains(pro.Name))
                            pro.SetValue(objT, row[pro.Name] == DBNull.Value ? string.Empty : row[pro.Name].ToString(), null);
                    }
    
                    return objT;
                }).ToList();
            }
    View Code

    把DataTable转换为JSON:

    方法源代码:

     public static string ToJson(this DataTable table)
            {
                List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
    
                foreach (DataRow row in table.Rows)
                {
                    Dictionary<string, object> dict = new Dictionary<string, object>();
    
                    foreach (DataColumn col in table.Columns)
                    {
                        dict[col.ColumnName] = row[col];
                    }
                    list.Add(dict);
                }
                            
                return serializer.Serialize(list);
            }
    View Code

     

    实例应用,可以从下面这篇可以参考:《创建与使用Web APIhttp://www.cnblogs.com/insus/p/5019088.html

  • 相关阅读:
    事件溯源的使用实例
    CQRS With Axon
    maven打包带依赖
    MongoDB Query语法和工具
    docker 在外部指定参数变量 spring
    logger 过滤部分类的logger
    Nginx ServerName指令
    Nginx 处理Http请求简单流程
    Listen 指令
    Nginx 配置
  • 原文地址:https://www.cnblogs.com/insus/p/5034995.html
Copyright © 2011-2022 走看看