本文实例讲述了C#中DataSet转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下:
复制代码 代码如下:///
/// DataSet转换为实体类
///
///
/// DataSet
/// 待转换数据表索引
///
public static T DataSetToEntity
{
if (p_DataSet == null || p_DataSet.Tables.Count < 0)
return default(T);
if (p_TableIndex > p_DataSet.Tables.Count - 1)
return default(T);
if (p_TableIndex < 0)
p_TableIndex = 0;
if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
return default(T);
DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];
// 返回值初始化
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)
{
pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null);
}
else
{
pi.SetValue(_t, null, null);
}
}
return _t;
}
///
/// DataSet转换为实体列表
///
///
/// DataSet
/// 待转换数据表索引
///
public static IList
{
if (p_DataSet == null || p_DataSet.Tables.Count < 0)
return default(IList
if (p_TableIndex > p_DataSet.Tables.Count - 1)
return default(IList
if (p_TableIndex < 0)
p_TableIndex = 0;
if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
return default(IList
DataTable p_Data = p_DataSet.Tables[p_TableIndex];
// 返回值初始化
IList
for (int j = 0; j < p_Data.Rows.Count; j++)
{
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)
{
pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null);
}
else
{
pi.SetValue(_t, null, null);
}
}
result.Add(_t);
}
return result;
}
希望本文所述对大家的C#程序设计有所帮助。



