2011-04-15 14 views
5

Estoy tratando de hacer un método de búsqueda simple usando LINQ to SQL en Visual Studio. En mi base de datos, tengo los campos "Nombre" y "Apellido", y mi cadena de búsqueda es "nombre". ¿Cómo puedo hacer una consulta LINQ simple que busca en ambos campos?Buscar dos columnas en LINQ to SQL?

En SQL llanura que haría algo como esto:

+2

¿Qué usted intentó hasta el momento y por qué no funciona? –

+0

No sé cómo unir dos campos en Linq, por lo que aún no he probado nada. – user709712

Respuesta

18

Lo habitual es que hacer esto:

var users = 
    from user in db.Users 
    where user.FirstName.Contains(searchString) || 
     user.LastName.Contains(searchString) 
    select user; 

Sin embargo, esto no es equivalente a la consulta SQL. El siguiente es equivalente:

var users = 
    from user in db.Users 
    let fullName = user.FirstName + user.LastName 
    where fullName.Contains(searchString) 
    select user; 
+0

Blah vencido :(+1 – Phill

+0

Funcionó:) ¡Gracias! – user709712

+2

+1 para la respuesta en el segundo cuadro de código, pero me pregunto sobre el código en el primer cuadro. No puedo ver que alguna vez funcione. Ejemplo: searchString = "First Last" no coincidiría si la tabla FirstName contenía "First" y LastName tabla contenía "Last" Supongo que necesitaría dividir la cadena para que funcione. – rasmusvhansen

1
// get all items from table where firstname like searchstring or lastname like searchstring 
var result = from p in db.Table 
      where (p.Firstname.Contains(searchString) || p.Lastname.Contains(searchString)) 
      select p; 
+0

Eso no tiene nada que ver con el SQL en su pregunta. Toma mi nombre, por ejemplo. La búsqueda de mi nombre completo me devolvería en su SQL pero no en su consulta. –

4
var result = from p in db.Table 
      let fullname = p.FirstName + " " + p.Lastname 
      where fullname.Contains(searchString) 
      select new { Fullname = fullname }; 
+0

¡Gracias por tu ayuda! =) – user709712

+0

Esperemos que más personas lean más abajo ya que esta solución encontrará a Bob Smith cuando use las cadenas de búsqueda "Bob", "Bob S" y "Bob Smith". Buena respuesta, gracias. –