zoukankan      html  css  js  c++  java
  • 解决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 }); * */

  • 相关阅读:
    iOS_21团购_地图功能
    Android 完整开源应用大全,完整开源项目
    Java Ant Could not find the main class: org.eclipse.ant.internal.launching.remote.InternalAntRunner. Program
    Java Swing JScrollPane 设置滚动量
    svg defs 进行定义 引用
    Java Swing paint repaint update 方法的关系
    Java Swing jpanel paint方法执行两次的问题
    java Swing 图片缓冲机制
    Spring mvc基本原理
    Java Swing Graphics Graphics2D的一般用法
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/hgsfhgfh.html
Copyright © 2011-2022 走看看