C#: как установить значение combobox из запроса linq
Итак, у меня есть выпадающий список, чьи источники данных являются результатами запроса 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 ответа
Решение
Вы указываете 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";
Вы можете попробовать это:
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()
к вашему коду в строке источника данных.