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
  • 相关阅读:
    检测ORACLE方法汇总数据块损坏
    DHot.exe 热点新闻
    无效 URI: 故障分析证书颁发机构/主机
    lucene两个分页操作
    求职技巧—2014六个秘诀二
    ubuntu下一个rootusername入口mysql,如何查看username和password,如何改变rootpassword
    LeetCodeOJ. Maximum Depth of Binary Tree
    基于用户的推荐协同过滤算法的算法
    《C++ Primer Plus》学习笔记10
    m_Orchestrate learning system---八、下拉列表(select标签)如何实现链接功能
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/3614160.html
Copyright © 2011-2022 走看看