【发布时间】:2018-08-16 20:40:58
【问题描述】:
这是我获得结果的方式(示例):
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from table_name t";
//retrieve the result
OracleDataReader reader = cmd.ExecuteReader();
然后我有一个与查询字段匹配的 POCO 类(逐行)。话虽如此,我创建了一个列表:
List<ReportsModel> reports= new List<ReportsModel>();
然后我遍历reader:
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 );
}
问题是:我的 POCO 类有大约 300 个字段(查询也返回相同的数量)。如何将我的结果集 (OracleDataReader reader) 映射到我的 List<ReportsModel> 而不必逐行获取 (report.Id_product = reader["ID_PRODUCT"])?我知道可能有一种方法可以使用 lambda(arrow function) 和 Linq 之类的东西来解决它。
【问题讨论】:
-
HomeMadeSolution :循环遍历阅读器中的所有列,使用与列名匹配的
ReportsModel的反射查找属性并为其赋值。 -
或者使用任何 ORM...
标签: c# oracle linq lambda resultset