将DataSet转换为List
/// <summary>
/// DataSetToList
/// </summary>
/// <typeparam name="T">转换类型</typeparam>
/// <param name="dataSet">数据源</param>
/// <param name="tableIndex">需要转换表的索引</param>
/// <returns></returns>
public Static List<T> DataSetToList<T>(DataSet dataSet, int tableIndex)
{
//确认参数有效
if (dataSet == null || dataSet.Tables.Count <= 0 || tableIndex < 0)
return null;
DataTable dt = dataSet.Tables[tableIndex];
List<T> list = new List<T>();
for (int i = 0; i < dt.Rows.Count; i++)
{
//创建泛型对象
T _t = Activator.CreateInstance<T>();
//获取对象所有属性
PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
for (int j = 0; j < dt.Columns.Count; j++)
{
foreach (PropertyInfo info in propertyInfo)
{
//属性名称和列名相同时赋值
if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
{
if (dt.Rows[i][j] != DBNull.Value)
{
info.SetValue(_t, dt.Rows[i][j], null);
}
else
{
info.SetValue(_t, null, null);
}
break;
}
}
}
list.Add(_t);
}
return list;
}
将List转换为DataTable
public static DataTable ToDataTable<T>(IEnumerable<T> list)
{
PropertyInfo[] modelItemType = typeof(T).GetProperties();
DataTable dataTable = new DataTable();
dataTable.Columns.AddRange(modelItemType.Select(Columns => new DataColumn(Columns.Name, Columns.PropertyType)).ToArray());
if (list.Count() > 0)
{
for (int i = 0; i < list.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in modelItemType)
{
object obj = pi.GetValue(list.ElementAt(i), null);
tempList.Add(obj);
}
object[] dataRow = tempList.ToArray();
dataTable.LoadDataRow(dataRow, true);
}
}
return dataTable;
}
ArrayOfXElement转换为DataSet
/// <summary>
/// ArrayOfXElement转换为DataSet
/// </summary>
/// <param name="arrayOfXElement">ArrayOfXElement</param>
/// <returns>DataSet</returns>
public static DataSet ToDataSet(ArrayOfXElement arrayOfXElement)
{
var strSchema = arrayOfXElement.Nodes[0].ToString();
var strData = arrayOfXElement.Nodes[1].ToString();
var strXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n\t<DataSet>";
strXml += strSchema + strData;
strXml += "</DataSet>";
DataSet ds = new DataSet("NewDataSet");
ds.ReadXml(new MemoryStream(Encoding.UTF8.GetBytes(strXml)));
return ds;
}