• 将list转换成DataTable


    /// <summary>
    /// 将list转换成DataTable
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="list"></param>
    /// <param name="propertyName"></param>
    /// <returns></returns>
    public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
    {
    List<string> propertyNameList = new List<string>();
    if (propertyName != null)
    {
    propertyNameList.AddRange(propertyName);
    }
    DataTable result = new DataTable();
    if (list.Count > 0)
    {
    PropertyInfo[] propertys = list[0].GetType().GetProperties();
    foreach (PropertyInfo pi in propertys)
    {
    if (propertyNameList.Count == 0)
    {
    Type colType = pi.PropertyType;
    if (colType.IsGenericType && colType.GetGenericTypeDefinition() == typeof(Nullable<>))
    {
    colType = colType.GetGenericArguments()[0];
    }
    result.Columns.Add(pi.Name, colType);
    }
    else
    {
    if (propertyNameList.Contains(pi.Name))
    {
    result.Columns.Add(pi.Name, pi.PropertyType);
    }
    }
    }
    for (int i = 0; i < list.Count; i++)
    {
    ArrayList tempList = new ArrayList();
    foreach (PropertyInfo pi in propertys)
    {
    if (propertyNameList.Count == 0)
    {
    object obj = pi.GetValue(list[i], null);
    tempList.Add(obj);
    }
    else
    {
    if (propertyNameList.Contains(pi.Name))
    {
    object obj = pi.GetValue(list[i], null);
    tempList.Add(obj);
    }
    }
    }
    object[] array = tempList.ToArray();
    result.LoadDataRow(array, true);
    }
    }
    return result;
    }

  • 相关阅读:
    多选菜单shell脚本
    获取nginx日志状态码百分比脚本
    Linux内核参数优化
    deploy.sh
    Docker常用命令速查
    Docker架构
    修改Docker默认存储路径
    redis安装与基本使用
    js实现汉字转拼音
    android:Android 6.0+ 权限控制代码封装
  • 原文地址:https://www.cnblogs.com/fengyeqingxiang/p/14107177.html
Copyright © 2020-2023  润新知