Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.Hosting, seguramente los mejores precios de alojamiento

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

15/jun/2007
Cuando hagas una consulta, por favor indica que versión del lenguaje estás usando y procura hacer la pregunta en el foro más adecuado... para eso hay varios.
Gracias.

  Foro: .NET.LINQ Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 53415 - Linq Buscar Parecidos
IDAsuntoFechaNick 
53415 Linq Buscar Parecidos22/07/10 14:05Alvaro_t   
Hola:
Quiero buscar las coincidencias que hay en una lista mediante Linq (aunque si es de otra forma tb me vale). Si busco la palabra Almacen en una lista y existe no tengo problemas, se hacerlo.
El problema me surge cuando esa palabra no existe. Entonces quiero que la consulta (o si esa da cero resultados una nueva) me devuelva la mejor coincidencia, es decir:
Si tengo en una lista Al, Alameda, Altanero y estoy buscando Almacen, como esa no existe, que me devuelva Alameda como la mejor coincidencia (es el elemento anterior en orden alfabético).
Como puedo hacerlo?
La lista es una lista genérica de ClienteEntidad, creada por mi que recibe datos de una base de datos (sin Linq)
IDAsuntoFechaNick 
53656 Re: Linq Buscar Parecidos (Resp: 53415)15/08/10 18:30elGuille [MVP]   
Seguramente habrá otra forma mejor, pero... lo que se me ocurre es que busques todos los que sean menor que el indicado y te quedes con el último:
' Buscar el anterior más parecido al indicado (si no está)
Private Sub
     consultaParecida(ByVal txtConsulta As String)
    Dim resp = From cli In clis _
               Where cli.Apellidos.ToLower = txtConsulta.ToLower _
               Select cli

    If resp.Count = 0 Then
        ' Buscar el anterior
        resp = From cli In clis _
               Where cli.Apellidos.ToLower < txtConsulta.ToLower _
               Select cli
    End If

    If resp.Count > 0 Then
        Dim cli2 = resp.Last
        Console.WriteLine("{0}, {1}", cli2.Apellidos, cli2.DNI)
    Else
        Console.WriteLine("No se ha encontrado nada")
    End If
End Sub

   elGuille


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2018  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8800)
 
Usuarios activos: 153 - App. iniciada: 09/12/2018 20:51:06 GMT - La hora GMT del servidor es: 09/12/2018 22:46:41 GMT