EF实体查询出的数据List<T>转DataTable出现【DataSet 不支持 System.Nullable<>】的问题

     public static DataTable ToDataTable<T>(this IEnumerable<T> varlist, CreateRowDelegate<T> fn)
        {
            DataTable dtReturn = new DataTable();
            // column names
            PropertyInfo[] oProps = null;
            // Could add a check to verify that there is an element 0
            foreach (T rec in varlist)
            {
                // Use reflection to get property names, to create table, Only first time, others will follow
                if (oProps == null)
                {
                    oProps = ((Type)rec.GetType()).GetProperties();
                    foreach (PropertyInfo pi in oProps)
                    {
                        Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                        {
                            colType = colType.GetGenericArguments()[0];
                        }
                        dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
                    }
                }
                DataRow dr = dtReturn.NewRow(); foreach (PropertyInfo pi in oProps)
                {
                    dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
                }
                dtReturn.Rows.Add(dr);
            }
            return (dtReturn);
        }
        public delegate object[] CreateRowDelegate<T>(T t);
List<T> list = DAL.ToList();
dataGridView1.DataSource = list.ToDataTable(a => new object[] { list });

以上代码可解决

原文地址:https://www.cnblogs.com/a849788087/p/8182891.html

时间: 2024-10-11 06:37:31

EF实体查询出的数据List<T>转DataTable出现【DataSet 不支持 System.Nullable<>】的问题的相关文章

sql语句中查询出的数据添加一列,并且添加默认值

查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 app_id | expires_in --------------------+------------ wxeec89cdf2d435d10 | 7200 wxeec89cdf2d435d10 | 7200 wx9b7bfb5f59df5009 | 7200 wx9b7bfb5f59df5009

在ASP.NET MVC中利用Aspose.cells 将查询出的数据导出为excel,并在浏览器中下载。

正题前的唠叨 本人是才出来工作不久的小白菜一颗,技术很一般,总是会有遇到一些很简单的问题却不知道怎么做,这些问题可能是之前解决过的.发现这个问题,想着提升一下自己的技术水平,将一些学的新的'好'东西记录下来,一是加深印象:二是以后可以作为参考:三是希望博友们可以提出不足和可以优化的地方,一起讨论. 这个是我去一家公司没多久,让我做的小功能,主要是导出excel并在浏览器下载下来. 但是会有不同的细微的需求差别. 第一次发博客,有描述不清楚的地方还请见谅,希望各位多多指点. 进入正题 简单的需求描

学习vue结合ajax查询出后台数据

第一步:先获取后台的API 这里已经写好了后台,API是bookAction_getAllBook 第二步:创建jsp文件并导入vue.js和JQuery.js 第三步:写上Model 第四步:写上View 这时页面上的显示的数据都是写死的,这时候就需要写上ajax通过它来获取到后台的数据并把它显示出来 第五步:ajax 先把model定义成一个带有bookList的空数组以便于存放后台获取的json数据 这时候要注意,这里有两个方法,我推荐使用的是方法二,因为方法一有一个不好的地方就是在页面成

DataTable查询出DataRow数据

代码如下: DataTable dt = new DataTable(); DataColumn dc1 = new DataColumn("Id", typeof(string)); DataColumn dc2 = new DataColumn("Name", typeof(string)); dt.Columns.Add(dc1); dt.Columns.Add(dc2); DataRow dr = dt.NewRow(); dr["Id"

[技术分享]20171214_oracle_带rownum的查询语句查询出重复数据:原因是order by没有加主键

原始的sql是这样的: select * from( select tmp.*,rownum rn from( select * from table1 where column1 ='12345' order by column2,column3 desc ) tmp where rownum<=30 ) where rn>20 问题:在我的项目中,当rownum<=20 , rn>10的数据和rownum<=30 , rn>20的数据一样. 解决办法:后来在orde

mysql下更新查询出的数据的语句upda set select

在oracle 等数据库中可以使用 update wwm2 set wwm2.town=(select wwm5.town from wwm5 where wwm5.id=wwm2.id) 这种格式的句子更新数据库,但是我最近用mysql 发现不能这样使用,所以在网上查了下,发现mysql用另一种语句解决了,inner join:::: 应该使用inner join,即:UPDATE friends INNER JOIN users ON friends.friendid=users.useri

查询输入框中输入【%%%】能查询出所有结果的解决方案

在开发中输入[%%%]字符的时候能够查询出所有数据. 解决方案:参数化查询+输入框数据处理. 输入框数据处理: /// <summary> /// 处理查询条件中的特殊字符 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string GetStringFilter(string keyVal

EF实体框架数据操作基类(转)

//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述:实体框架数据仓储的操作接口,包含增删改查接口////----------------------------------------------------------------using System;using System.Data.Entity.Infrastruct

EF实体框架数据操作基类

//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述:实体框架数据仓储的操作接口,包含增删改查接口////----------------------------------------------------------------using System;using System.Data.Entity.Infrastruct