none
¿Hay alguna forma alternativa de hacer lo siguiente? RRS feed

  • Pregunta

  • Verán, esta condición funciona:

    If Listas.Any(Function(Lista) Lista.Nombre.ToUpper = cNombre) Then
       MsgBox("Existe")
    End If

    Pero si Lista.Nombre no tiene ningún dato se produce un error, entonces le puse esta condición:

    If Listas.Any(Function(Lista) (Not String.IsNullOrEmpty(Lista.Nombre)) AndAlso Lista.Nombre.ToUpper = cNombre) Then
       MsgBox("Existe")
    End If

    Y también funciona. La consulta es si a lo mejor hay otra alternativa en lugar de esa condición añadida para evitar el error cuando Lista.Nombre no tiene dato. Usando también Any y obviamente, que haga lo mismo, que compruebe si el cNombre buscado existe.


    lunes, 11 de enero de 2021 17:45

Respuestas

Todas las respuestas

  • no hay muchas alternativas ya que tu solo estas haciendo una simple comparación podrias hacer algo como esto 

       If listas.Any(Function(lista) lista.Nombre.ToUpper = cNombre.ToUpper AndAlso lista.Nombre.ToUpper <> Nothing) Then
                MsgBox("Existe")
            Else
                MsgBox("No existe")
        End If
    pero no hay mucho diferencia con tu segundo ejemplo otra cosa es que no se porque te sale error seguro que no te muestra el mensaje del msgbox pero un error no creo ya que aunque Lista.Nombre no tenga ningún valor no se genera un error lo único que pasaría es que se salga del If ya que no se cumple la consulta podria ser que estas poniendo un  tipo de datos incorrecto pero de lo contrario no se generaría ningún error

    lunes, 11 de enero de 2021 21:30
  • Deleted
    • Propuesto como respuesta Sergio Parra lunes, 11 de enero de 2021 22:39
    • Marcado como respuesta James2016-2 martes, 12 de enero de 2021 1:56
    lunes, 11 de enero de 2021 22:19
  • Private _Nombre As String
    
    Public Property Nombre As String
    	Get
    		Return If(_Nombre Is Nothing, String.Empty, _Nombre)
    	End Get
    	Set
    		_Nombre = Value
    	End Set
    End Property

    Si te cabe referirte a una instancia vacía de la clase String, en vez de a una inexistente, entonces escribe la propiedad de este modo, y el ToUpper no lanzará la excepción.
    Ah, OK, gracias, es una buena alternativa.
    martes, 12 de enero de 2021 1:54
  • no hay muchas alternativas ya que tu solo estas haciendo una simple comparación podrias hacer algo como esto 

       If listas.Any(Function(lista) lista.Nombre.ToUpper = cNombre.ToUpper AndAlso lista.Nombre.ToUpper <> Nothing) Then
                MsgBox("Existe")
            Else
                MsgBox("No existe")
        End If
    pero no hay mucho diferencia con tu segundo ejemplo otra cosa es que no se porque te sale error seguro que no te muestra el mensaje del msgbox pero un error no creo ya que aunque Lista.Nombre no tenga ningún valor no se genera un error lo único que pasaría es que se salga del If ya que no se cumple la consulta podria ser que estas poniendo un  tipo de datos incorrecto pero de lo contrario no se generaría ningún error

    Hola, si pongo la primera condición primero, como la pusiste, me sale error de instancia no inicializada y si visualizo cada elemento de la lista cuando llega a ese elemento no visualiza nada. Gracias de todos modos.
    martes, 12 de enero de 2021 1:57
  • Hola James,

    Gracias por confirmar que se ha encontrado una solución a la consulta realizada.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 13 de enero de 2021 15:15
    Moderador