zoukankan      html  css  js  c++  java
  • LinqToDataTable[转]

    LinqToDataTable:

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

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

     来自:http://www.cnitblog.com/MartinYao/archive/2008/05/05/43329.html

  • 相关阅读:
    IDEA手动创建JFinal项目(404问题处理)
    php 把数字1-1亿换成汉字表述,例如 150 转成 一百五十
    模仿console自写函数打印js的对象
    每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒? php
    js-Event构造函数,也许你需要
    js将金额专成每隔3位数加逗号
    js-PC版监听键盘大小写事件
    用php脚本给html中引用的js和css路径打上版本
    通过js的console优雅的将php调试信息输出
    android中加载的html获取的宽高不正确
  • 原文地址:https://www.cnblogs.com/Pynix/p/1435982.html
Copyright © 2011-2022 走看看