2017-04-27 8 views
0

WebMatrix.Data.DynamicRecordをオブジェクトに変換する方法はありますか?私はMyObjectには例外を与えているにWebMatrix.Data.DynamicRecord(records.ElementAt(I))をキャスティングここWebMatrix.Data.DynamicRecordをオブジェクトにキャストする

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 
    } 

としてこの関数を呼び出した場合

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; 
     } 

としてSQLクエリを実行するコードを持っています。 WebMatrix.Data.DynamicRecordをMyObjectに変換する方法はありますか?

答えて

0

私は頑丈な方法はないと思います。 myObjectのコンストラクタに動的レコードを持たせることをお勧めします。次いで、ループ内:コンストラクタで

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

マイオブジェクト

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

} 

ための明らかに、データベース内の行から来たクラスとr.aのメンバーです。これは面倒ですが、それは動作します。おそらく、コンストラクターにも適切なデフォルトまたはエラー・チェックやNULLの処理があります。

関連する問題