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
  • 相关阅读:
    hdu 1372 Knight Moves
    hdu 1253 胜利大逃亡
    nyoj 737 石子合并 经典区间 dp
    nyoj 737 石子合并 http://blog.csdn.net/wangdan11111/article/details/45032519
    nyoj 55 懒省事的小明
    C++ STL priority_queue
    Code forces363D Renting Bikes
    性能测试分享:jmeter性能监控(一)
    性能测试培训:WebSocket协议的接口性能之Jmeter
    翻译一篇文章:It's Difficult to Grow a Test Developer(成为测试开发工程师的艰辛)
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/3614160.html
Copyright © 2011-2022 走看看