我有一个数据列表和一些属性.我想把列表数据转换成数据表.如何将列表转换为数据表.

推荐答案

添加这个函数并调用它,它将转换为List to DataTable.

public static DataTable ToDataTable<T>(List<T> items)
{
        DataTable dataTable = new DataTable(typeof(T).Name);
    
        //Get all the properties
        PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (PropertyInfo prop in Props)
        {
            //Defining type of data column gives proper data table 
            var type = (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) ? Nullable.GetUnderlyingType(prop.PropertyType) : prop.PropertyType);
            //Setting column names as Property names
            dataTable.Columns.Add(prop.Name, type);
        }
        foreach (T item in items)
        {
           var values = new object[Props.Length];
           for (int i = 0; i < Props.Length; i++)
           {
                //inserting property values to datatable rows
                values[i] = Props[i].GetValue(item, null);
           }
           dataTable.Rows.Add(values);
      }
      //put a breakpoint here and check datatable
      return dataTable;
}

Asp.net相关问答推荐

如何在 MVC 中为国家和州/省创建 Select 列表

我可以将图像添加到 ASP.NET 按钮吗?

如何在 ASP.NET 全球化中配置不变文化?

Azure 自定义控制器/API .Net 后端

我可以在 .net 核心中使用 Entity Framework 6(非核心)吗?

在 ASP.NET 中更改错误消息的语言

如何检测 ASP.net 应用程序中的 SqlServer 连接泄漏?

ASP.NET Web 应用程序消息框

什么相当于 ASP.NET 中的 cron 作业(job)?

可空日期时间转换

获取页面上特定类型的所有 Web 控件

为应用程序池Classic .NET AppPool提供服务的进程与 Windows 进程激活服务发生了致命的通信错误

存在 ios 7 虚拟键盘时,div 元素不会停留在底部

Owin.IAppBuilder不包含MapSignalR的定义

带有 ASP.NET WebMethod 的 Jquery AJAX 返回整个页面

在资源文件中使用 HTML

将字典绑定到中继器

判断 IQueryable 结果集的最佳方法是什么?

在 Visual Studio 2012 中调试 .NET Framework 源代码?

MVC4 中 Global.asax.cs 页面中的问题