zoukankan      html  css  js  c++  java
  • 将LINQ查询的结果转化为DataTable

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using COMMON.DATA;

    namespace COMMON
    {
      public static class DataHelper
      {

        public static DataTable _data;
        public static DataTable Data
      {
        get { return _data; }
        set { _data = value; }
      }

    public static DataTable GetData()
    {
      DATA.ProTestDataContext dataContext=new ProTestDataContext();
      var dt = from fx in dataContext.TaskTab select fx;
      DataTable dtt=new DataTable();
      dtt = ConvertToDataTable(dt.ToList());
      Data = dtt;
      return Data;
    }

    #region "Convert Generic List to DataTable"
    /// <summary>
    /// Convert a List{T} to a DataTable.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="items"></param>
    /// <returns></returns>
    public static DataTable ConvertToDataTable<T>(this List<T> items)
    {
      var tb = new DataTable(typeof(T).Name);

      PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

      foreach (PropertyInfo prop in props)
      {
        Type t = GetCoreType(prop.PropertyType);
        tb.Columns.Add(prop.Name, t);
      }

      foreach (T item in items)
      {
        var values = new object[props.Length];

        for (int i = 0; i < props.Length; i++)
        {
          values[i] = props[i].GetValue(item, null);
        }
        tb.Rows.Add(values);
      }
      return tb;
    }

    /// <summary>
    /// Determine of specified type is nullable
    /// </summary>
    /// <param name="t"></param>
    /// <returns></returns>
    public static bool IsNullable(Type t)
    {
      return !t.IsValueType || (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>));
    }

    /// <summary>
    /// Return underlying type if type is Nullable otherwise return the type.
    /// </summary>
    /// <param name="t"></param>
    /// <returns></returns>
    public static Type GetCoreType(Type t)
    {
      if (t != null && IsNullable(t))
      {
        if (!t.IsValueType)
        {
          return t;
        }
        else
        {
          return Nullable.GetUnderlyingType(t);
        }
      }
      else
      {
        return t;
      }
    }
    #endregion
      }
    }

    You can reach me by surfing the web ---- huntjobs.cn,or sending e-mails to me,Here is my qq MailBox:1424870395@qq.com
  • 相关阅读:
    linux命令
    牛顿法|阻尼牛顿法|拟牛顿法|DFP算法|BFGS算法|L-BFGS算法
    借One-Class-SVM回顾SMO在SVM中的数学推导--记录毕业论文5
    【转】白话经典算法系列之七 堆与堆排序
    volatie关键字
    【转】从输入网址到显示网页的全过程分析
    CSS和HTML的一些事
    JavaScript笔记梳理
    形状文法--建筑风格分类总结
    Baidu ECharts知识梳理
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/3614160.html
Copyright © 2011-2022 走看看