您的位置:首页 > 其它

IList及泛型集合类转换DataTable

2009-11-11 11:16 344 查看
/// 将集合类转换成DataTable


/// </summary>


/// <param name="list">集合</param>


/// <returns></returns>


public static DataTable ToDataTable(IList list)






{


DataTable result = new DataTable();


if (list.Count > 0)






{


PropertyInfo[] propertys = list[0].GetType().GetProperties();


foreach (PropertyInfo pi in propertys)






{


result.Columns.Add(pi.Name, pi.PropertyType);


}




for (int i = 0; i < list.Count; i++)






{


ArrayList tempList = new ArrayList();


foreach (PropertyInfo pi in propertys)






{


object obj = pi.GetValue(list[i], null);


tempList.Add(obj);


}


object[] array = tempList.ToArray();


result.LoadDataRow(array, true);


}


}


return result;


}






/**//// <summary>


/// 将泛型集合类转换成DataTable


/// </summary>


/// <typeparam name="T">集合项类型</typeparam>


/// <param name="list">集合</param>


/// <returns>数据集(表)</returns>


public static DataTable ToDataTable<T>(IList<T> list)






{


return ConvertX.ToDataTable<T>(list, null);


}






/**//// <summary>


/// 将泛型集合类转换成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)






{


result.Columns.Add(pi.Name, pi.PropertyType);


}


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;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: