使用具有Linq匿名类型的ComboBox的SelectedItem属性

问题描述 投票:4回答:2

在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
                       };

我实际上正在使用的匿名类型要复杂得多,但足以用于解释。

c# linq combobox datasource anonymous-types
2个回答
2
投票

如何将其转换为列表,然后从中选择正确的列表。由于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;

0
投票

这应该可以解决问题

var list = (from p in db.products
              select new {
                             p.ProductId,
                             p.Name
                           }).ToList();
comboBox1.DataSource = list;
comboBox1.SelectedItem = list[0];
© www.soinside.com 2019 - 2024. All rights reserved.