62,046
社区成员
发帖
与我相关
我的任务
分享
public class MyObj
{
public string Name;
public double Value;
}
那么直接查询 List<MyObj> result;
using (var conn = new OracleConnection(cnStr))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "select TheName, Number from Users ..........";
comm.CommandType = System.Data.CommandType.Text;
result = ( from DbDataRecord record in comm.ExecuteReader()
select new MyObj{
Name = (string)record["TheName"],
Value = (double)record["Number"]
};
).ToList();
}
或者是,比如说
public static List<T> ExecuteReader(string SQLString, Func<DbDataReader, List<T>> converter
{
using (var conn = new OracleConnection(cnStr))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = SQLString;
comm.CommandType = System.Data.CommandType.Text;
return Conveter(comm.ExecuteReader());
}
}
这样,通过using语法结构,保证了连接的安全。
于是最上面的调用就可以改写为static List<MyObj> ConvertToMyObjList(DbDataReader dataReader)
{
return ( from DbDataRecord record in dataReader
select new MyObj{
Name = (string)record["TheName"],
Value = (double)record["Number"]
};
).ToList());
}
和var result = ExecuteReader("select TheName, Number from Users ..........", r=> ConvertToMyObjList(r) );