bootstrap easyui RunJS JSFiddle codepen Gist

解决DataSet不支持System.nullable

using System;

using System.Data;

using System.Collections;

using System.Collections.Generic;

using System.Configuration;

using System.Reflection;

using System.Linq;

using System.Xml.Linq;

namespace UserFunction

{    

/// <summary>    

/// Summary description for LinqToDataTable    

/// </summary>    

static public  class LinqToDataTable    

{        

static public  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);     } }

/* * 示例: * var query = from ....; * DataTable dt = query.ToDataTable(rec => new object[] { query }); * */

posted @ 2012-10-31 10:38  lvyafei  阅读(872)  评论(0编辑  收藏  举报
博客地址:lvyafei 返回顶部   返回顶部   返回顶部 站长QQ,点击这里给我发消息
无觅关联推荐,快速提升流量