C# 从列表框项获取值

C# 从列表框项获取值,c#,winforms,combobox,listbox,C#,Winforms,Combobox,Listbox,我正在尝试使用WinC窗体从列表框中的所有项中获取值。我有一个包含多个项的组合框,这些项是从数据源填充的,当我在组合框中提交选择时,我希望这些值存储在列表框中 IQueryable clientes = getcompanies(); combo1.DataSource = companies; combo1.DisplayMember = "name"; combo1.ValueMember = "id"; private void combo1_SelectionChangeCommit

我正在尝试使用WinC窗体从列表框中的所有项中获取值。我有一个包含多个项的组合框,这些项是从数据源填充的,当我在组合框中提交选择时,我希望这些值存储在列表框中

IQueryable clientes = getcompanies();
combo1.DataSource = companies;
combo1.DisplayMember = "name";
combo1.ValueMember = "id";

 private void combo1_SelectionChangeCommitted(object sender, EventArgs e)
    {
        listBox1.Items.Add(combo1.SelectedItem);
        listBox1.DisplayMember = "name";
        listBox1.ValueMember = "id";
    }
public IQueryable getcompanies()
    {
        var company= from c in context.companies
                       select new
                       {
                           c.id,
                           name= c.fname+" "+ c.lname
                       };
        return company;
    }
我对这段代码没有任何问题,当我从组合框中选择and项时,它被添加到列表框中,并且只有displaymember属性是可见的,正如我所希望的那样。 问题是我不知道如何从列表框中的所有项获取所有valuemember属性。有什么想法吗?

如果你这么做的话

var items = ((List<string>)listBox1.Items);
您需要将列表更改为公司的数据类型

然后,您应该能够使用foreach循环遍历项目,如果执行此操作,则可以像正常情况一样访问属性id

var items = ((List<string>)listBox1.Items);
您需要将列表更改为公司的数据类型


然后,您应该能够使用foreach循环遍历项目,然后您可以像平常一样访问属性id

在stackoverflow上回答的问题:

在stackoverflow上回答的问题:

谢谢,公司是一个IQueryable数据类型,我得到一个转换错误ObjectCollection'to'System.Linq.IQueryable'如果没有更多的代码,我帮不了你多少忙,基本上我说的替换列表的类型是错误的。在deubg模式下浏览代码,查看listBox1.Items是什么,并将其转换为该模式。我在问题中添加了更多详细信息。Listbox.items是ObjectCollection数据类型。谢谢Jonathan,Companys是IQueryable数据类型,我得到了一个转换错误ObjectCollection“to”System.Linq.IQueryable“如果没有更多代码,我帮不了你多少忙,基本上你在我说的替换列表的地方有错误的类型。在deubg模式下浏览代码,查看listBox1.Items是什么,并将其转换为该模式。我在问题中添加了更多详细信息。Listbox.items是ObjectCollection数据类型。