SqlDataReader to IList<T>
来源:互联网 发布:java扫描linux文件夹 编辑:程序博客网 时间:2024/06/05 09:23
#region SqlDataReader to IList<T>
public static IList<T> SqlDataReaderToIList<T>(SqlDataReader sqldatareader)
{
try
{
IList<T> list = new List<T>();
while (sqldatareader.Read())
{
T t = System.Activator.CreateInstance<T>();
Type type = t.GetType();
for (int i = 0; i < sqldatareader.FieldCount; i++)
{
object TempValue = null;
if (sqldatareader.IsDBNull(i))
{
string typeFullName = type.GetProperty(sqldatareader.GetName(i)).PropertyType.FullName;
TempValue = GetDbNullValue(typeFullName);
}
else
{
TempValue = sqldatareader.GetValue(i);
}
type.GetProperty(sqldatareader.GetName(i)).SetValue(t, TempValue, null);
}
list.Add(t);
}
return list;
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqldatareader.Close();
sqldatareader.Dispose();
}
}
private static object GetDbNullValue(string typeFullName)
{
typeFullName = typeFullName.ToLower();
if (typeFullName == "string")
return string.Empty;
else if (typeFullName == "int32" || typeFullName == "int16" || typeFullName == "int64")
return 0;
else if (typeFullName == "datetime")
return Convert.ToDateTime(DateTime.MinValue);
else if (typeFullName == "boolean")
return false;
else if (typeFullName == "int")
return 0;
return null;
}
#endregion
public static IList<T> SqlDataReaderToIList<T>(SqlDataReader sqldatareader)
{
try
{
IList<T> list = new List<T>();
while (sqldatareader.Read())
{
T t = System.Activator.CreateInstance<T>();
Type type = t.GetType();
for (int i = 0; i < sqldatareader.FieldCount; i++)
{
object TempValue = null;
if (sqldatareader.IsDBNull(i))
{
string typeFullName = type.GetProperty(sqldatareader.GetName(i)).PropertyType.FullName;
TempValue = GetDbNullValue(typeFullName);
}
else
{
TempValue = sqldatareader.GetValue(i);
}
type.GetProperty(sqldatareader.GetName(i)).SetValue(t, TempValue, null);
}
list.Add(t);
}
return list;
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqldatareader.Close();
sqldatareader.Dispose();
}
}
private static object GetDbNullValue(string typeFullName)
{
typeFullName = typeFullName.ToLower();
if (typeFullName == "string")
return string.Empty;
else if (typeFullName == "int32" || typeFullName == "int16" || typeFullName == "int64")
return 0;
else if (typeFullName == "datetime")
return Convert.ToDateTime(DateTime.MinValue);
else if (typeFullName == "boolean")
return false;
else if (typeFullName == "int")
return 0;
return null;
}
#endregion
- SqlDataReader to IList<T>
- IList,IList<T>转成dataSet
- IList(T)转换DataSet
- IList(T) 方法
- IList(T) 方法
- IList<T>排序
- IList to datatable
- Repeater绑定IList<T>数据源
- ILIST<t>转换成DataTable
- DataReader转换为IList<T>
- List<T>与IList<T>的区别
- Ilist<T>转换为List<T>
- IList<T>和List<T>区别
- List<T>和Ilist<T>的区别
- C# 中 Ilist<T> 转换成 DataTable
- DataTable IList<T> 与 Json 互转
- 将IList<T>转换成DataTable
- Ilist<T> 转换成 DataSet
- 一个很好的Android应用源码下载站——WAP地带
- EasyUI—Accorditon可折叠标签
- couch base使用记录
- C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
- 程序员:伤不起的三十岁
- SqlDataReader to IList<T>
- 网络性能简单检测
- UML类图关系大全-JAVA
- 如何解决C#导出excel异常来自 HRESULT:0x800A03EC的方法
- LINQ学习心得分享----(一)LINQ简介和基础学习
- <context-param>与<init-param>的区别与作用
- 百度地图api的实现
- 公司20大秘密 值得一看很受用
- 一种粗糙的全排列算法