使用ComboBox的SelectedItem属性w / Linq匿名类型

在C#3.5中使用ComboBox显示LinQ查询的结果。 当LinQ查询返回匿名类型时,如何设置combobox的selecteditem属性?

我沿着这些行设置了combobox的数据源:

comboBox1.DataSource = from p in db.products select p; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "ProductId"; 

如果我这样做,我可以通过以下方式选择所选项目:

 comboBox1.SelectedItem = (from p in db.products where p.ProductId = 5 select p).First(); 

问题是我想用匿名类型结果填充combobox,如:

 comboBox1.DataSource = from p in db.products select new { p.ProductId, p.Name }; 

我实际使用的匿名类型比那更复杂,但它足以解释。

如何将其转换为列表,然后从中选择正确的列表。 由于SelectedItem似乎不起作用,您可能想尝试设置SelectedValue。

 var productList = (from p in db.products select new { ProductId = p.ProductID, Name = p.Name }).ToList(); comboBox1.DataSource = productList; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "ProductId"; comboBox1.SelectedValue = 5; 

这应该可以解决问题

 var list = (from p in db.products select new { p.ProductId, p.Name }).ToList(); comboBox1.DataSource = list; comboBox1.SelectedItem = list[0];