public List <mail_Mensaje_Info> consultar(eTipoMail TipoCorreo, string direccionCorreo, int NumPag, int Registro_x_pagina, string CadenaBusqueda, ref string mensajeErrorOut)
        {
            List <mail_Mensaje_Info> lista = new List <mail_Mensaje_Info>();
            decimal Ultimoindice           = 0;

            try
            {
                using (EntitiesFactElectronica conexion = new EntitiesFactElectronica())
                {
                    var q = from C in conexion.sp_consulta_x_Mensaje_x_Pagina(NumPag, Registro_x_pagina, TipoCorreo.ToString(), direccionCorreo, CadenaBusqueda)
                            orderby C.Fecha descending
                            select new
                    {
                        C.IdEmpresa,
                        C.IdMensaje,
                        C.Fecha,
                        C.Para,
                        C.Para_CCO,
                        C.Asunto,
                        C.Mail,
                        C.Tiene_Adjunto,
                        C.Prioridad,
                        C.Leido
                        ,
                        C.Respondido,
                        C.Eliminado,
                        C.Para_CC,
                        C.codMensajeId,
                        C.IdTipo_Mensaje,
                        C.IdCuenta,
                        C.IdContribuyente,
                        C.Mail_secundario,
                        C.Password,
                        C.Nom_Contribuyente,
                        C.Telefono,
                        C.cedulaRuc_contri,
                        C.RazonSocial_Emisor,
                        C.RUC_Emisor
                    };



                    foreach (var item in q)
                    {
                        mail_Mensaje_Info     infoC      = new mail_Mensaje_Info();
                        tb_Contribuyente_Info InfoContri = new tb_Contribuyente_Info();
                        Ultimoindice++;

                        infoC.IdMensaje            = item.IdMensaje;
                        infoC.Fecha                = item.Fecha;
                        infoC.sFecha               = item.Fecha.ToString();
                        infoC.Para                 = item.Para;
                        infoC.Para_CCO             = item.Para_CCO;
                        infoC.Asunto               = item.Asunto;
                        infoC.mail_remitente       = item.Mail;
                        infoC.Tiene_Adjunto        = item.Tiene_Adjunto;
                        infoC.Prioridad            = item.Prioridad;
                        infoC.Leido                = item.Leido;
                        infoC.Respondido           = item.Respondido;
                        infoC.IdTipo_Mensaje       = (eTipoMail)Enum.Parse(typeof(eTipoMail), item.IdTipo_Mensaje);
                        infoC.Eliminado            = item.Eliminado;
                        infoC.Para_CC              = item.Para_CC;
                        infoC.Mostrar_col_Eliminar = true;
                        infoC.codMensajeId         = item.codMensajeId;
                        infoC.IdCuenta             = item.IdCuenta;
                        infoC.MosTrar_icono_Ride   = false;
                        infoC.MosTrar_icono_xml    = false;
                        if (item.IdContribuyente != null)
                        {
                            InfoContri.IdContribuyente   = (item.IdContribuyente == null) ? 0 : Convert.ToDecimal(item.IdContribuyente);
                            InfoContri.Mail              = item.Mail;
                            InfoContri.Mail_secundario   = item.Mail_secundario;
                            InfoContri.Password          = item.Password;
                            InfoContri.Nom_Contribuyente = item.Nom_Contribuyente;
                            InfoContri.IdEmpresa         = (item.IdEmpresa == null) ? 0 : Convert.ToInt32(item.IdEmpresa);

                            InfoContri.Telefono         = item.Telefono;
                            InfoContri.cedulaRuc_contri = item.cedulaRuc_contri;
                            infoC.Fecha              = item.Fecha;
                            infoC.RUC_Emisor         = item.RUC_Emisor;
                            infoC.RazonSocial_Emisor = item.RazonSocial_Emisor;
                        }
                        infoC.InfoContribuyente = InfoContri;

                        lista.Add(infoC);
                    }
                }

                return(lista);
            }
            catch (Exception ex)
            {
                mensajeError = ex.InnerException + " " + ex.Message;
                tb_sis_Log_Error_Vzen_Data oDataLog      = new tb_sis_Log_Error_Vzen_Data();
                tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), eTipoError.ERROR, mensajeError, "",
                                                                                          "", "", "", "", DateTime.Now);
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensajeError);
                Ultimoindice++;
                return(lista);
            }
        }