none
Ignorar acentos en linq RRS feed

Todas las respuestas

  • Hola Juanppa

    Utilice el siguiente método de extensión para ignorar los acentos:

    Imports System.Text
    Imports System.Runtime.CompilerServices
    Imports System.Globalization
    
    Module Module1
        <Extension()>
        Public Function IgnorarAcentos(cadena As String)
            Dim cadenaNormalizada As String = cadena.Normalize(NormalizationForm.FormD)
            Dim cadenaConstruida As StringBuilder = New StringBuilder()
    
            For i As Integer = 0 To cadenaNormalizada.Length - 1
                Dim c As Char = cadenaNormalizada(i)
                If (CharUnicodeInfo.GetUnicodeCategory(c) <> UnicodeCategory.NonSpacingMark) Then
                    cadenaConstruida.Append(c)
                End If
    
            Next
    
            Return cadenaConstruida.ToString()
        End Function
    
    End Module

    Observe que debe poner el método de extensión en un Módulo y decorarlo como tal <Extension()>.

    Después puede llamar al método de extensión desde la consulta LINQ.



    Miguel Torres


    martes, 23 de agosto de 2016 22:10
  • Hola Juanppa,

    Talvéz este link te ayude :

    LINQ Where Ignore Accentuation and Case

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Pedro Ávila domingo, 25 de septiembre de 2016 20:30
    • Votado como útil Pedro Ávila domingo, 25 de septiembre de 2016 20:30
    martes, 23 de agosto de 2016 22:11
  • Hola que tal muchas gracias pero no funciona por que solo remueve el acento de la key que introduzco 

    lo que pretendo es consultar desde la bd con linq y que me muestre todos los que palabras que considan ya sea que tenga acento o no 


    Url

    martes, 23 de agosto de 2016 22:26
  • Hola Juanppa

    Usted puede utilizar instrucciones como las siguientes para trabajar con LINQ con el Método de Extensión:

    Dim consulta As String = IgnorarAcentos(TextBox1.Text).ToString.ToUpper()
    Dim result = From e In Empleados
                 Where e.PrimerNombre.ToUpper().IgnorarAcentos() = consulta
                 Select e

    El ejemplo anterior elimina los acentos del TextBox y convierte su contenido a Mayúsculas, luego elimina los acentos del campo PrimerNombre y lo convierte a mayúsculas, seguidamente compara ambas cadenas.

    Si le ha servido no olvide votar e indicar como respuesta.

    Saludos,


    Miguel Torres


    martes, 23 de agosto de 2016 22:58
  • Hola Juanppa

    También puede utilizar el siguiente código para comparar dos cadenas ignorando el acento:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim cadena1 As String = "Así" ' con acento
            Dim cadena2 As String = "Asi" ' sin acento 
    
            If (String.Compare(cadena1, cadena2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) = 0) Then
    
                ' Las cadenas son iguales: Ponga aquí el código
    
            End If
        End Sub

    Si le ha servido no olvide votar y marcar como respuesta.

    Saludos,


    Miguel Torres




    martes, 23 de agosto de 2016 23:06
  • Hola Juanppa

    Si usted desea que la comparación ignore acentos y además no distinga entre mayúsculas y minúsculas utilice el código siguiente:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim cadena1 As String = "Así" ' con acento
            Dim cadena2 As String = "ASI" ' sin acento y en mayúsculas 
    
            If (String.Compare(cadena1, cadena2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace Or CompareOptions.IgnoreCase) = 0) Then
                ' Las cadenas son iguales: Ponga aquí el código
            End If
        End Sub
    Si le ha servido no olvide votar e indicar como respuesta.

    Saludos,


    Miguel Torres


    martes, 23 de agosto de 2016 23:15