• 将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
  • 相关阅读:
    杨中科 向HtmlAgilityPack道歉:解析HTML还是你好用
    感觉这个JQuery不错,查询方便
    数据库异步操作
    Command 设计模式
    osg 细节裁剪 SAMLL_FEATURE_CULLING
    errno错误代码
    清空std::stringstream
    eclipse android javabuilder +CDTbuilder
    mfc c++ system调用 控制台窗口
    Androidndkr8e wordlist 第二个参数不是数值参数
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/3614160.html
Copyright © 2020-2023  润新知