2011-04-15 4 views
5

J'essaie de faire une méthode de recherche simple en utilisant LINQ to SQL dans Visual Studio. Dans ma base de données, j'ai les champs "Prénom" et "Nom", et ma chaîne de recherche est "nom". Comment puis-je faire une requête LINQ simple qui recherche les deux champs?Rechercher deux colonnes dans LINQ to SQL?

en SQL je ferais quelque chose comme ceci:

+2

Qu'est-ce que vous avez essayé jusqu'à présent et pourquoi ne pas travailler? –

+0

Je ne sais pas comment joindre deux champs dans Linq, donc je n'ai encore rien essayé. – user709712

Répondre

18

La chose habituelle à faire est la suivante:

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

C'est cependant pas équivalent à votre requête SQL. Ce qui suit est équivalent:

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

Bla battu à ce :(+1 – Phill

+0

Cela a fonctionné:) Merci! – user709712

+2

+1 pour la réponse dans la deuxième zone de code, mais je m'interroge sur le code dans la première case. Je ne peux pas voir ça fonctionner. Exemple: searchString = "First Last" ne correspondrait pas si la table FirstName contenait "First" et la table LastName contenait "Last" Je suppose que vous devez diviser la chaîne pour que cela fonctionne. – 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

Cela n'a rien à voir avec le SQL dans sa question. Prenez mon nom par exemple. La recherche de mon nom complet me renverrait dans son SQL mais pas dans votre requête. –

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

Merci pour votre aide! =) – user709712

+0

Espérons que plus de gens liront plus bas car cette solution trouvera Bob Smith lors de l'utilisation des chaînes de recherche "Bob", "Bob S" et "Bob Smith". Bonne réponse, merci. –