C#.NET List与Date转换

/// <summary>
/// List<T> 转 DataTable.
/// </summary>
private DataTable ToDataTable<T>(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>
///判断是否为空
/// </summary>
public static bool IsNullable(Type t)
{
    return !t.IsValueType || (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>));
}

/// <summary>
/// 判断是否为空
/// </summary>
public static Type GetCoreType(Type t)
{
    if (t != null && IsNullable(t))
    {
        if (!t.IsValueType)
        {
            return t;
        }
        else
        {
            return Nullable.GetUnderlyingType(t);
        }
    }
    else
    {
        return t;
    }
}
/// <summary>
/// DataTable转换到List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="table"></param>
/// <returns></returns>
public static IList<T> ConvertTo<T>(DataTable table)

{
    if (table == null)
    {
        return null;
    }
    List<DataRow> rows = new List<DataRow>();
    foreach (DataRow row in table.Rows)
    {
        rows.Add(row);
    }
    return ConvertTo<T>(rows);
}
public static IList<T> ConvertTo<T>(IList<DataRow> rows)
{
    IList<T> list = null;
    if (rows != null)
    {
        list = new List<T>();
        foreach (DataRow row in rows)
        {
            T item = CreateItem<T>(row);
            list.Add(item);
        }
    }
    return list;
}
public static T CreateItem<T>(DataRow row)
{
    T obj = default(T);
    if (row != null)
    {
        obj = Activator.CreateInstance<T>();
        foreach (DataColumn column in row.Table.Columns)
        {
            PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName);
            try
            {
                object value = row[column.ColumnName];
                prop.SetValue(obj, value, null);
            }
            catch
            {
                // throw;
            }
        }
    }
    return obj;
}

猜你喜欢

转载自blog.csdn.net/u014249305/article/details/106901625
今日推荐