Conversion error in a linq query

6

I made this query and Where is giving this error:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.Generic.List<AnonymousType#1>'

Missed this part

string _cnpj = carregaGrid.cnpjRazao;

This is my linq query.

var resultado = (from web in db.T_PDV

                             join testab in db.T_TipoEstabelecimento on web.IDTipoEstabelecimento equals (testab.IDTipoEstabelecimento)
                             join trede in db.T_TipoRede on web.IDTipoRede equals (trede.IDTipoRede)
                             join tusupdv in db.T_UsuarioPDV on web.IDPdv equals (tusupdv.IDPDV)
                             join tusu in db.T_Usuario on tusupdv.IDUsuario equals (tusu.IDUsuario)
                             join tstatus in db.T_CRM_StatusPDV on web.CNPJ equals (tstatus.DE_Cnpj)

                             select new
                             {
                                 web.CNPJ,
                                 web.RazaoSocial,
                                 web.NomeFantasia,
                                 web.Endereco,
                                 web.Bairro,
                                 web.Cidade,
                                 web.Estado,
                                 web.CEP,
                                 web.Complemento,
                                 web.Numero,
                                 web.QtdeCheckOuts,
                                 web.Telefone,
                                 web.NomeRede,
                                 web.Email,
                                 web.Celular,
                                 web.IS_Ativo,
                                 tstatus.IT_Status,
                                 trede.Nome,
                                 contato = tusu.Nome,
                                 cel_contato = tusu.Celular
                             }).ToList();

            if (!string.IsNullOrEmpty(_cnpj))
                resultado = resultado.Where(cn => cn.CNPJ == _cnpj);

What can I do to solve it? I tried a ToString () and even then the error continues. The error is in this line:

if (!string.IsNullOrEmpty(_cnpj))
                    resultado = resultado.Where(cn => cn.CNPJ == _cnpj);

My complete code

[HttpPost]
        public JsonResult MontaGridPdv(carregaGridPesquisa carregaGrid)//
        {
            ConsultaGeral geral = new ConsultaGeral();
            V99_WEBEntities db = new V99_WEBEntities();
            V99_QAEntities dba = new V99_QAEntities();

            string[] arrayCnpj = null;
            string[] arrayRazao = null;
            int cont = 0;
            var resultado = (from web in db.T_PDV

                             join testab in db.T_TipoEstabelecimento on web.IDTipoEstabelecimento equals (testab.IDTipoEstabelecimento)
                             join trede in db.T_TipoRede on web.IDTipoRede equals (trede.IDTipoRede)
                             join tusupdv in db.T_UsuarioPDV on web.IDPdv equals (tusupdv.IDPDV)
                             join tusu in db.T_Usuario on tusupdv.IDUsuario equals (tusu.IDUsuario)
                             join tstatus in db.T_CRM_StatusPDV on web.CNPJ equals (tstatus.DE_Cnpj)

                             select new
                             {
                                 web.CNPJ,
                                 web.RazaoSocial,
                                 web.NomeFantasia,
                                 web.Endereco,
                                 web.Bairro,
                                 web.Cidade,
                                 web.Estado,
                                 web.CEP,
                                 web.Complemento,
                                 web.Numero,
                                 web.QtdeCheckOuts,
                                 web.Telefone,
                                 web.NomeRede,
                                 web.Email,
                                 web.Celular,
                                 web.IS_Ativo,
                                 tstatus.IT_Status,
                                 trede.Nome,
                                 contato = tusu.Nome,
                                 cel_contato = tusu.Celular
                             });

            if (!string.IsNullOrEmpty(_cnpj))
                resultado = resultado.Where(cn => cn.CNPJ == carregaGrid.cnpjRazao);
            if (!string.IsNullOrEmpty(carregaGrid.contato))
                resultado = resultado.Where(cn => cn.Contato == carregaGrid.contato);
            if (!string.IsNullOrEmpty(carregaGrid.rede))
                resultado = resultado.Where(cn => cn.Rede == carregaGrid.rede);

            return Json(new { resultado }, JsonRequestBehavior.AllowGet);
        }

Try this and do not give more error. I'll test the code still, but is this the way?

var result = resultado.ToList();

            return Json(new { result }, JsonRequestBehavior.AllowGet);
    
asked by anonymous 26.06.2014 / 22:11

1 answer

3

So:

Take out ToList() from the first one and put it in only when assembling all the expressions!

[HttpPost]
public JsonResult MontaGridPdv(carregaGridPesquisa carregaGrid)
{
    ConsultaGeral geral = new ConsultaGeral();
    V99_WEBEntities db = new V99_WEBEntities();
    V99_QAEntities dba = new V99_QAEntities();

    string[] arrayCnpj = null;
    string[] arrayRazao = null;
    int cont = 0;

    var resultado = (from web in db.T_PDV
                     join testab in db.T_TipoEstabelecimento on web.IDTipoEstabelecimento equals (testab.IDTipoEstabelecimento)
                     join trede in db.T_TipoRede on web.IDTipoRede equals (trede.IDTipoRede)
                     join tusupdv in db.T_UsuarioPDV on web.IDPdv equals (tusupdv.IDPDV)
                     join tusu in db.T_Usuario on tusupdv.IDUsuario equals (tusu.IDUsuario)
                     join tstatus in db.T_CRM_StatusPDV on web.CNPJ equals (tstatus.DE_Cnpj)
                     select new
                     {
                         web.CNPJ,
                         web.RazaoSocial,
                         web.NomeFantasia,
                         web.Endereco,
                         web.Bairro,
                         web.Cidade,
                         web.Estado,
                         web.CEP,
                         web.Complemento,
                         web.Numero,
                         web.QtdeCheckOuts,
                         web.Telefone,
                         web.NomeRede,
                         web.Email,
                         web.Celular,
                         web.IS_Ativo,
                         tstatus.IT_Status,
                         trede.Nome,
                         contato = tusu.Nome,
                         cel_contato = tusu.Celular
                     }).AsQueryable();

    if (!string.IsNullOrEmpty(_cnpj))
        resultado = resultado.Where(cn => cn.CNPJ == carregaGrid.cnpjRazao).AsQueryable();
    if (!string.IsNullOrEmpty(carregaGrid.contato))
        resultado = resultado.Where(cn => cn.Contato == carregaGrid.contato).AsQueryable();
    if (!string.IsNullOrEmpty(carregaGrid.rede))
        resultado = resultado.Where(cn => cn.Rede == carregaGrid.rede).AsQueryable();

    return Json(resultado.ToList() , JsonRequestBehavior.AllowGet);
}
    
26.06.2014 / 22:17