2017-05-29 97 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