【问题标题】:c#: how to set combobox valuemember from linq queryc#:如何从 linq 查询中设置组合框值成员
【发布时间】:2011-08-27 17:24:23
【问题描述】:

好的,所以我有组合框,其数据源是 linq 查询的结果

//load QA names
            var qaNames =
                from a in db.LUT_Employees
                where a.position == "Supervisor" && a.department == "Quality Assurance"
                select new { a, Names = a.lastName + ", " + a.firstName };

            cboQASupervisor.DataSource = qaNames;
            cboQASupervisor.DisplayMember = "Names";

我遇到的问题是当我尝试添加下一行代码时

cboQASupervisor.ValueMember = "ID";

我在运行时收到一个错误,它无法转换匿名类型。我该如何解决这个问题?

更正: 错误是:

无法绑定到新值成员。 参数名称:值

【问题讨论】:

    标签: c# linq datasource valuemember


    【解决方案1】:

    您将 ID 指定为值字段,但您的匿名类型中没有 ID 属性。
    假设您的 LUT_Employees 对象中有 ID:

    var qaNames = (
        from a in db.LUT_Employees
        where a.position == "Supervisor" && a.department == "Quality Assurance"
        select new { a.ID, Names = a.lastName + ", " + a.firstName })
        .ToList();
    
    cboQASupervisor.DataSource = qaNames;
    cboQASupervisor.DisplayMember = "Names";
    cboQASupervisor.ValueMember = "ID";
    

    【讨论】:

    • ID 在 LUT_Employees 对象中,但我仍然收到错误消息。实际上,您的解决方案是我尝试的第一件事。
    • 需要在匿名类型中指定属性名。 ->“新{ ID = a.ID,”
    • @Sinaesthetic - 检查 - 添加 ToList()
    • 宾果游戏。我认为属性名称隐含在列名中
    • @Michael - 不,如果属性名称相同,则无需指定属性名称。
    【解决方案2】:

    你可以试试这个:

           var qaNames =
           from a in db.LUT_Employees
           where a.position == "Supervisor" && a.department == "Quality Assurance"
            select new { Id = a.ID,  Names = a.lastName + ", " + a.firstName };
    
            cboQASupervisor.DataSource = qaNames.ToList();
            cboQASupervisor.DisplayMember = "Names";
            cboQASupervisor.ValueMember = "Id";
    

    .ToList() 添加到数据源行中的代码中。

    【讨论】:

    • 你确定吗?你的例外是什么?你添加了.ToList() 吗?
    • 异常完全一样
    • 现在知道了,您使用 ID 代替 Id,而我的代码使用的是 Id,您实际上并没有将其更改为 Id,无论如何很高兴您成功了。
    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多