Los foros del Guille

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

Google
 

elGuille.hosting: OFERTA Multi Dominio por 40.95 Eur al mes

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

06/jun/2006
REPETIMOS: Por favor, por favor, por favor... no repitas mensajes en varios foros.
Lo único que consigues con ello es confundir a la gente y dar más trabajo a los que responden mensajes. 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-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 7 - App. iniciada: 18/11/2017 18:43:39 GMT - La hora GMT del servidor es: 18/11/2017 19:25:38 GMT