Usuário com melhor resposta
Subselect em linq

Pergunta
-
Bom dia Pessoal, montei as pesquisa em Linq abaixo:
var listaChamadosDepto = from icd in dc.Incidentes join atd in dc.AtendenteAuxiliars on icd.Id equals atd.IdChamado into leftJoinAtd from atd in leftJoinAtd.DefaultIfEmpty() join usr in dc.Usuarios on icd.Usuario equals usr.Id join und in dc.Unidades on usr.Unidade equals und.Id join depto in dc.Departamentos on usr.Departamento equals depto.ID join sla in dc.SLAs on icd.catalogo equals sla.Id where icd.DataEncerrament == null && depto.ID == nDepto.ID orderby icd.DataAbertura, icd.Prioridade select new { icd.Id, icd.DataAbertura, icd.DtVencimento, icd.Prioridade, icd.Usuario, usr.NomeCompleto, Unidade = und.Descricao, Departamento = depto.Descricao, icd.Assunto, icd.Classificacao, icd.DataEncerrament, icd.IdIncidenteFornecedor, icd.DataResolucaoFor, icd.catalogo };
No retorno da coluna "Departamento", estou trazendo a escrição relacionado ao join do usuario, porém gostaria de trazer a descrição da relação da tabela SLA que montei, desta forma monte a pesquisa abaixo utilizando um subselect:
var listaChamadosDepto = from icd in dc.Incidentes join atd in dc.AtendenteAuxiliars on icd.Id equals atd.IdChamado into leftJoinAtd from atd in leftJoinAtd.DefaultIfEmpty() join usr in dc.Usuarios on icd.Usuario equals usr.Id join und in dc.Unidades on usr.Unidade equals und.Id join depto in dc.Departamentos on usr.Departamento equals depto.ID join sla in dc.SLAs on icd.catalogo equals sla.Id where icd.DataEncerrament == null && depto.ID == nDepto.ID orderby icd.DataAbertura, icd.Prioridade select new { icd.Id, icd.DataAbertura, icd.DtVencimento, icd.Prioridade, icd.Usuario, usr.NomeCompleto, Unidade = und.Descricao, Departamento = (from dpt in dc.Departamentos where sla.IdDepartamento == dpt.ID select new { dpt.Descricao }), icd.Assunto, icd.Classificacao, icd.DataEncerrament, icd.IdIncidenteFornecedor, icd.DataResolucaoFor, icd.catalogo };
O problema para esta pesquisa é que o subselect monta um count(*) ao inves de trazer a "descrição", o que preciso para fazer com que ele traga a descrição?
W.Marrane
Respostas
-
Conforme já mencionado, coloca o FirstOrDefault
icd.Id, icd.DataAbertura, icd.DtVencimento, icd.Prioridade, icd.Usuario, usr.NomeCompleto, Unidade = und.Descricao, Departamento = (from dpt in dc.Departamentos where sla.IdDepartamento == dpt.ID select new { dpt.Descricao }).FirstOrDefault(), icd.Assunto, icd.Classificacao, icd.DataEncerrament, icd.IdIncidenteFornecedor, icd.DataResolucaoFor, icd.catalogo
- Marcado como Resposta W. Marrane quarta-feira, 11 de maio de 2016 14:24
Todas as Respostas
-
Olá,
Vai precisar colocar no final um .FirstorDefault(). Ele esta trazendo um count porque esta devolvendo um objeto colection e não um único registro.
- Editado Pablo D Pagues Ernst quarta-feira, 11 de maio de 2016 14:01
-
Conforme já mencionado, coloca o FirstOrDefault
icd.Id, icd.DataAbertura, icd.DtVencimento, icd.Prioridade, icd.Usuario, usr.NomeCompleto, Unidade = und.Descricao, Departamento = (from dpt in dc.Departamentos where sla.IdDepartamento == dpt.ID select new { dpt.Descricao }).FirstOrDefault(), icd.Assunto, icd.Classificacao, icd.DataEncerrament, icd.IdIncidenteFornecedor, icd.DataResolucaoFor, icd.catalogo
- Marcado como Resposta W. Marrane quarta-feira, 11 de maio de 2016 14:24