有没有办法将WebMatrix.Data.DynamicRecord转换为对象。我有代码执行sql查询
public IEnumerable<dynamic> ExecuteSelectQuery(string query, params object[] args)
{
IEnumerable<dynamic> resultSets = null;
OpenStore();
try
{
resultSets = db.Query(query, args);
}
catch (Exception ex)
{
Trace.TraceError("Unable to execute statement: " + query + ", Failed with error:" + ex);
}
finally
{
CloseStore();
}
return resultSets;
}
现在,如果我将此功能称为
string selectQuery = " SELECT * FROM " + TABLENAME + " WHERE condition = @0 ";
IEnumerable<dynamic> records= (IEnumerable<dynamic>)dbInstance.ExecuteSelectQuery(selectQuery, cond);
for (int i = 0; i < records.Count(); ++i){
MyObject obj = (MyOject)records.ElementAt(i);
//do somethinng
}
这里将WebMatrix.Data.DynamicRecord(records.ElementAt(i))转换为MyObject会给出异常。 有没有办法将WebMatrix.Data.DynamicRecord转换为MyObject?
答案 0 :(得分:0)
我认为这不是一种强有力的方式。我建议你让myObject的构造函数获取动态记录。然后在循环中:
MyObject obj = new MyObject( records.ElementAt(i) );
在My Object
的构造函数中public MyObject( dynamic r)
{
a = r.a;
b = r.b;
// ...
}
其中a是类的成员,r.a显然来自数据库中的行。虽然这很乏味,但它会起作用。也许有默认值或错误检查或处理在构造函数中也适用的空值。