¿Cómo utilizar un try y catch dentro de una consulta LINQ? Excepción | Exception C# VB .Net

Para poder cachar excepciones dentro de una consulta LINQ y poder manipular el error para que no truene la consulta en si misma debemos hacer uso de Lambda, esto es útil cuando nuestra base de datos puede presentar inconsistencias las cuales pueden ocasionar una excepción en ciertos casos, y podemos evitarlo de la siguiente forma:


EntityDB db= new EntityDB();
var lst = from d in db.tabla.ToList() //es importante hacerlo lista
                  select new TablaViewModel
                  {
                      id = d.id,
                      //campo es string por lo cual
                      //nuestra función delegada regresara igual string
                      campo = (new Func<string>(() => {
                                                            try {
                                                             // suponiendo que exista una referencia
                                                             // a una tabla secundaria la cual no siempre exista
                                                             // lo cual puede ocasionar una excepción
                                                             // de esta manera lo podemos manipular
                                                                 return d.tablaSecundaria.campo2;
                                                                 }
                                                            catch { return "No existe"; }
                                                        }
                                                  )
                                 )()
                  };

De esta manera nuestra consulta no tronara y podemos darle un resultado a la vista donde mostraremos nuestros datos.

Autor: Héctor de León

Desarrollador de software, lector compulsivo.

Un comentario en “¿Cómo utilizar un try y catch dentro de una consulta LINQ? Excepción | Exception C# VB .Net”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *