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

como iterar fila por fila en pandas

1  Asked on November 4, 2021 by emanuel-lemos

     

Express.static() en Cpanel no sirve CSS

1  Asked on November 4, 2021 by gabriel-taype

     

React native APK sin servidor

1  Asked on November 4, 2021 by gabocafer

 

Generar imagen php

1  Asked on November 4, 2021

   

Cambiar el valor de input cuando introduzco un numero

0  Asked on November 4, 2021 by razvan-lismanu

     

Como usar variables if en java para dos condiciones

1  Asked on November 4, 2021 by emil-jpz

 

Implementar método async que devuelva un valor decimal

2  Asked on August 27, 2021 by pedro-vila

   

No funciona mi botón con JavaScript

1  Asked on August 27, 2021 by braylin-ivan-payano

   

No puedo llamar Clase

1  Asked on August 27, 2021 by camilo34

   

Porque no funciona mi javascript?

1  Asked on August 27, 2021

     

Python – ayuda con regex

3  Asked on August 27, 2021 by gonzalo-rojo

   

Recibir datos post en node js express js

2  Asked on August 27, 2021 by alejandrognzls

     

Problema con errores en forms Django

1  Asked on August 27, 2021 by lucas-leone

   

Ask a Question

Get help from others!

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