c #: как установить значение combobox из запроса linq - PullRequest
5 голосов
/ 18 мая 2011

хорошо, у меня есть поле со списком, чьи источники данных являются результатами запроса 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";

Я получаю сообщение об ошибке во время выполнения, что не может привести анонимный тип. Как мне это исправить?

Исправление: Ошибка:

Невозможно привязать новый элемент значения. Имя параметра: значение

Ответы [ 2 ]

12 голосов
/ 18 мая 2011

Вы указываете ID в качестве поля значения, но у вас нет свойства ID в вашем анонимном типе.
Предполагается, что у вас есть идентификатор в вашем объекте LUT_Employees:

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";
2 голосов
/ 18 мая 2011

Вы можете попробовать это:

       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() к своему коду в строке источника данных.

...