将查询结果映射到类型列表

时间:2018-03-08 13:17:58

标签: c# oracle linq lambda resultset

以下是我得到结果的方法(例子):

dynamic var data: [T] = []

然后我有一个POCO类,它匹配查询的字段(逐行)。话虽这么说,我创建了一个List:

OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from table_name t";     
//retrieve the result
OracleDataReader reader =  cmd.ExecuteReader();

然后我遍历List<ReportsModel> reports= new List<ReportsModel>();

reader

问题是:我的POCO类有大约300个字段(查询返回相同的数量)。如何将结果集(while (reader.Read()) { //single report that I will pass to the colletion of reports ReportsModel report= new ReportsModel(); report.Id_product = reader["ID_PRODUCT"] == DBNull.Value ? 0 : Convert.ToInt32(reader["ID_PRODUCT"]); //passing report to reports reports.Add(report ); } )映射到OracleDataReader reader,而无需逐行(List<ReportsModel>)?我知道可能有一种方法可以使用像lambda(箭头函数)以及Linq或其他任何东西来解决它。

1 个答案:

答案 0 :(得分:1)

我采用@mjwills建议使用Dapper并解决了我的问题,这是我的代码:

string sql = "select * from table t ";   

//conn changed to IDbConnection, so I could use Dapper
var reports= conn.Query<ReportsModel>(sql).ToList();

就是这样,不需要编写代码来迭代OracleDataReader或其他任何东西! Dapper令人惊讶地处理它\ o

有用: Dapper Example