Pergunta

ok, então eu tenho de caixa de combinação whos fonte de dados são os resultados de uma consulta 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";

O problema que estou tendo é quando eu tento adicionar a seguinte linha de código

cboQASupervisor.ValueMember = "ID";

Eu recebo um erro em tempo de execução ele não conseguia converter o tipo anônimo. Como faço para corrigir isso?

Correção:O erro é:

Não é possível ligar o novo valor do membro.Nome do parâmetro:valor

Foi útil?

Solução

Você especificar o ID como o campo de valor, mas não têm propriedade ID no seu tipo anônimo.
Supondo que você tenha um ID no seu LUT_Employees objeto:

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";

Outras dicas

Você pode tentar isso:

       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";

Adicionar .ToList() para o código, a linha de origem de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top