2011-02-11 8 views
6

Estamos utilizando lo siguiente para generar una consulta de búsqueda (utilizando NHibernate).C# Lambda .Contiene() en propiedades múltiples

GetAll(x => x.Username.ToUpper().Contains(SEARCH)).ToList(); 

¿Es posible hacer una búsqueda (Contiene) para múltiples propiedades, algo así como ...

GetAll(x => x.Username.ToUpper().Contains(SEARCH) 
     && x => x.Firstname.ToUpper().Contains(SEARCH) 
     && x => x.Lastname.ToUpper().Contains(SEARCH)).ToList(); 

Utilizando C#

Respuesta

6
GetAll(x => x.Username.ToUpper().Contains(SEARCH) 
     && x.Firstname.ToUpper().Contains(SEARCH) 
     && x.Lastname.ToUpper().Contains(SEARCH)).ToList(); 

Me imagino que te gustaría para hacer una búsqueda en O bien:

GetAll(x => x.Username.ToUpper().Contains(SEARCH) 
     || x.Firstname.ToUpper().Contains(SEARCH) 
     || x.Lastname.ToUpper().Contains(SEARCH)).ToList(); 
+0

gracias Nick ... tienes razón sobre OR. Era solo la semántica en la que estaba interesado. No puedo creer que haya sido tan fácil ... Respuesta +1 – Hugusta

+1

@Hugusta: acepte una respuesta haciendo clic en la marca de la izquierda. –

+1

sí, tengo la intención de hacerlo. No pude antes debido al límite de tiempo y luego me distrajo. En este momento, hacer clic en el botón tiene toda mi atención! Ver este ..... – Hugusta

0

T ry NinjaNye.SearchExtensions.

Permitirá la siguiente sintaxis:

var result = GetAll().Search("search", 
          x => x.Username, 
          x => x.Firstname, 
          x => x.Lastname) 
        .ToList(); 

Cuando se utiliza con SQL, esto producirá algo como lo siguiente:

SELECT [Extent1].[Id] AS [Id], 
     [Extent1].[Username] AS [Username], 
     [Extent1].[Firstname] AS [Firstname], 
     [Extent1].[Lastname] AS [Lastname] 
FROM [dbo].[Users] AS [Extent1] 
WHERE ([Extent1].[Username] LIKE N'%search%') 
    OR ([Extent1].[Firstname] LIKE N'%search%') 
    OR ([Extent1].[Lastname] LIKE N'%search%') 

... es decir, todo el trabajo que se hace en los datos fuente, y no en la memoria

Para el código fuente, echar un vistazo a la página de gitHub:

https://github.com/ninjanye/SearchExtensions

Cuestiones relacionadas