Mediante Linq Dynamic, podemos establecer que campos deseamos obtener de forma dinámica. En mi caso lo utilice para generar informes personalizados.
|
var strCamposSeleccionados = "nombre, apellido, direccion, telefono"; // usamos System.Linq.Dynamic var datosSeleccionados= resultado.Select("new (" + strCamposSeleccionados + ")"); return datosSeleccionados.Cast<object>().Distinct().ToList(); |
Linq Dynamic
Este ejemplo, es en el caso de un checkedlistbox de una lista de strings
|
//Hay dos formas: chkListCampos.CheckedItems.OfType<string>().ToList(); chkListCampos.CheckedItems.Cast<string>().ToList(); |
Mi primer intento fue utilizando el GridView
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
var grid = new GridView(); grid.DataSource = from r in recibos select new { Expedicion = r.FechaExpedicion, Expediente = r.NumeroExpediente, Desde = r.FechaDesde, Hasta = r.FechaHasta, Precio = r.PrecioTotal, }; grid.DataBind(); Response.ClearContent(); Response.ContentType = "application/excel"; Response.AddHeader("content-disposition", "attachment; filename=recibos.xls"); StringWriter sw = new StringWriter(); HtmlTextWriter htmlTextWriter = new HtmlTextWriter(sw); grid.RenderControl(htmlTextWriter); Response.Write(sw.ToString()); Response.Flush(); Response.End(); |
El problema es que obtenía este error: “The file you are trying to open, ‘recibos.xls’ is in a different format than specified… Lee más »
El error se produce al enviar un mensaje con SSL.
|
SmtpClient envio = new SmtpClient(); envio.Credentials = new System.Net.NetworkCredential("micuenta@midominio.com", "micontraseña"); envio.Port = 587; envio.Host = "smtp.miservidordecorreo"; envio.EnableSsl = true; //Esto es para que vaya a través de SSL //Para evitar el error, debes utilizar este método que permite la validación personalizada por el cliente del certificado de servidor. ServicePointManager.ServerCertificateValidationCallback = delegate(object s , X509Certificate certificate , X509Chain chai , SslPolicyErrors sslPolicyErrors) { return true; }; envio.Send(mensaje) |