2016-03-21 42 views
4

Dapper提供了許多將數據映射到動態對象列表的方法。然而,在某些情況下,我想讀取數據到詞典列表。Dapper:如何從查詢中讀入字典列表?

的SQL可能看起來像:

"SELECT * FROM tb_User" 

作爲tb_User可以外部改變,我不知道會在結果返回哪些列。所以,我可以寫一些像這樣的代碼:

var listOfDict = conn.QueryAsDictionary(sql); 
foreach (var dict in listOfDict) { 
    if (dict.Contains("anyColumn")) { 
     // do right thing... 
    } 
} 

是否有任何內置的方法小巧玲瓏做到這一點的轉換?

+0

爲了更好的理解,你想要一個單獨的行爲的IDictionary''<,>,其中key =列名,值= columnValue? –

+0

是的確切! – ineztia

回答

7

你可以施放每行作爲IDictionary的:

var row = (IDictionary<string, object>)conn.Query("select foo = 1, bar = 'bar'").First(); 

    Assert.That(row["foo"], Is.EqualTo(1)); 
    Assert.That(row["bar"], Is.EqualTo("bar")); 
+1

我試圖找到關於將'dynamic'轉換爲'IDictionary'的文檔,但是找不到任何文檔。有沒有人有參考? – Mugen