填充类型Dynamic to combobox

时间:2017-05-29 12:18:40

标签: c# dynamic combobox

我在数据库中有一些数据并将其选择为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;

但这两种情况都不起作用......它总是让我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。所以它仍然很简单&#34;。

谷歌没有提出正确的结果。或者它可能提出了正确的,但我无法根据需要匹配它们。

这就是我的动态数据的样子

enter image description here

1 个答案:

答案 0 :(得分: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;