在C#3.5中使用ComboBox显示LinQ查询的结果.当LinQ查询返回匿名类型时,如何设置组合框的selecteditem属性?
我按照以下几行设置了组合框的数据源:
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();
问题是我想用匿名类型结果填充组合框,如:
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;