AnswerBun.com

Filtrar sólo si el campo no está vacío c#

Stack Overflow en español Asked by L. Ronquillo on January 4, 2022

Buen día, estoy haciendo un método para devolver registros en datatables.js, parte de mi método, tiene la siguiente consulta:

var Roles = Ss.ListarSucursales().Where(
                x =>
                (x.NombreSucursal.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0) ||
                x.Ciudad.Nombre.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0 ||
                x.Colonia.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase) >= 0).ToList();

El método funciona, pero me di cuenta que, por ejemplo, si en algún registro el valor de x.Colonia llega como NULL, me salta un error por tratar de filtrar un campo null. Quisiera poder filtrar por ese campo, sólo si ese campo no está vacío. Normalmente para eso, utilizaría !string.IsNullOrEmpty(x.Colonia) pero no sé como implementarlo en el bloque de código anterior.
¿Podrían ayudarme? de antemano muchas gracias 🙂

2 Answers

Si te entendí bien, este código te va a ser de utilidad:

var Roles = Ss.ListarSucursales()
            .Where(x =>
                (x.NombreSucursal.ToLower().Contains(searchColum.ToLower()) ||
                (x.Ciudad.Nombre.ToLower().Contains(searchColum.ToLower()) ||
                (x.Colonia.ToLower().Contains(searchColum.ToLower()))
            .ToList();

Lectura recomendada:

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.contains?view=netcore-3.1

Answered by fredyfx on January 4, 2022

Prueba usando el operador ??, de la siguiente forma:

la parte

x.NombreSucursal.IndexOf(searchColum, StringComparison.OrdinalIgnoreCase)

quede

(x.NombreSucursal??"").IndexOf(searchColum, StringComparison.OrdinalIgnoreCase)

lo anterior para cada una de las instrucciones que tienes como corresponda.

Lo que hace el operador ?? es que si lo que esta a su izquierda es NULL retorna el valor que pones a su derecha; tal que si x.NombreSucursal en cada interacción que sea NULL devolverá cadena vacía y en los casos que no devolverá el valor de x.NombreSucursal.

Este operador puede ser usado con cualquier tipo de dato; desde luego poniendo a su derecha un mismo tipo de dato al de su derecha, pues la derecha sería el valor por default; es decir si x.NombreSucursal fuese un entero sería x.NombreSucursal??0 o si fuese un objeto x.NombreSucursal??(new ElObjeto()).

Gracias

Answered by RobertoLeOr on January 4, 2022

Add your own answers!

Related Questions

Gridview jquery se pierde cuando recargo datatable

1  Asked on December 23, 2020 by ibeth-carmona

       

Android: Problemas con formato de fechas (SimpleDateFormat)

0  Asked on December 22, 2020 by verlyn-luna

   

¿crear lista de botones del mismo tamaño en flutter?

1  Asked on December 21, 2020 by harvey66

   

Herramienta de modelado de bases de datos nosql

0  Asked on December 21, 2020 by jose-ignacio-gonazlez

       

¿Qué es memoización y cómo se usa?

1  Asked on December 21, 2020 by candid-moe

     

Exportar a Excel en ASP.NET

2  Asked on December 21, 2020 by carlosr93

   

Mi aplicación WPF no se ejecuta en otros ordenadores

1  Asked on December 21, 2020 by devinthe30s

       

Json undefined problema con mostrar los valores

0  Asked on December 20, 2020 by locura

         

Como detener un bucle for sin usar un break?

2  Asked on December 20, 2020 by julin-taborda

   

Funcionalidad del return en JavaScript

3  Asked on December 19, 2020 by junner13

 

Porqué no se muestra la imagen de fondo?

0  Asked on December 19, 2020 by christian-hidalgo

   

Odoo server no se inicia en Windows 10

0  Asked on December 18, 2020

     

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP