使用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];