2017-05-29 130 views
0

我在DB一些數據,並選擇它變成一個dynamic可變..填充型動態到組合框

dynamic _data; 
_data = db.Select("select * from foobar"); 

這結束了類似的信息(動態視圖):

0 => customername => "blabla", 
    companyname => "haha" 
1 => customername => "hihi", 
    companyname => "hoho" 

等等。

調試這個充滿活力的類型也表明了我的數據存在的(結果視圖

0 => key => "customername", value => "blabla", 
    key => "companyname", value => "haha" 
1 => key => "customername", value => "hihi", 
    key => "companyname", value => "hoho" 

我想才達到與當前內容添加到組合框像

cmbGroup.DisplayMember = "customername"; 
cmbGroup.ValueMember = "customername"; 
cmbGroup.DataSource = _data; 

cmbGroup.DisplayMember = "key"; 
cmbGroup.ValueMember = "value"; 
cmbGroup.DataSource = _data; 

但這兩種情況下不工作k ...它總是顯示我System.Dynamc.ExpandoObject作爲組合框。

我試圖將數據轉換成一個列表

private List<string> dyn2List() 
{ 
    List<string> ls = new List<string> { }; 
    foreach(var d in _data) 
    { 
     ls.Add(d.customername); 
    } 
    return ls; 
} 

,並添加它,有什麼實際工作不知何故但這並不似乎是很好的方式,當你知道我的意思。此外,如果我使用列表轉換....我必須避免重複這會帶來很多其他錯誤...(說短:不知道如何)

所以我的問題:有反正在組合框中使用<dynamic>作爲數據源?

返回的所有值都是字符串atm。所以它仍然是「簡單」的。

Google沒有想出正確的結果。或者它可能提出了正確的,但我無法根據需要匹配它們。

這是我的動態數據看起來像

enter image description here

回答

0

試試你的數據伸入形式你想要的:

var _data = db.Select("select * from foobar") 
    .Select(d => new 
     { customername = d.customername, 
      companyname = d.comapanyname 
     }); 

comboBox1.DisplayMember = "customername"; 
comboBox1.ValueMember = "companyname"; 

comboBox1.DataSource = _data; 
+0

,但我不知道有多少結果有...所以多次調用'new {}'...如何掠奪我的動態數據? – Dwza

+0

由於我沒有你的數據,我做了我自己的演示數據。用你的_data替換我的'data'。它工作嗎? – Crowcoder

+0

仍然會導致乘以'System.Dynamic.ExpandoObject' – Dwza