c# - 将 ComboBox 的 SelectedItem 属性与 Linq 匿名类型一起使用

标签 c# linq combobox datasource anonymous-types

在 C# 3.5 中使用组合框显示 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;

关于c# - 将 ComboBox 的 SelectedItem 属性与 Linq 匿名类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530482/

相关文章:

delphi - 在 Delphi 中高效填充组合框

c# - 从字符串转换日期时间的语法错误

C# XmlReader 冒号问题(命名空间)

c# - 使用 LINQ 计算 float 数组的平均值

c# - 选择后的每次迭代

c# - 如何将一个静态列表的项目转移到另一个

c# - C# 应该有一个 forone 结构吗? (或者处理零个或一个案例的最干净的方法是什么)

c# - 找不到 Microsoft.Win32

qt - QML 组合框样式

javascript - 如何为组合框赋值