2017-04-27 114 views
0

有沒有辦法來WebMatrix.Data.DynamicRecord轉換爲對象。我有代碼執行SQL查詢作爲鑄造WebMatrix.Data.DynamicRecord一個對象

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

我不認爲有一個強大的方法。我建議你有myObject的構造函數採取動態記錄。然後在循環:

MyObject obj = new MyObject(records.ElementAt(i)); 

在構造函數中我的對象

public MyObject(dynamic r) 
{ 
    a = r.a; 
    b = r.b; 
    // ... 

} 

其中a是類和R.A的成員顯然已經從數據庫中讀取行。雖然這很乏味,但它會起作用。也許有默認值或錯誤檢查或處理在構造函數中也適用的空值。