2010-10-20 5 views
6

Je sais que la méthode .Contains() fait comme LIKE %therm%, la méthode .StartsWith() fait comme LIKE therm% et la méthode .EndsWith() comme LIKE %therm mais ...comme avec LINQ to Entities

Y at-il un moyen de faire comme ci-dessous sur **Linq to Entities**?

SELECT * FROM [dbo].[Users] WHERE Name LIKE 'rodrigo%otavio%diniz%waltenberg' 

PS: J'utilise LINQ TO ENTITIES. PAS LINQ TO SQL

+0

double possible de [? Comment utiliser 'LIKE' SQL avec LINQ to Entities] (http://stackoverflow.com/questions/3095781/how-to-use-sql-like -with-linq-to-entities) –

Répondre

2

Oui, you can do this with ESQL/Syntaxe de requête Constructeur:

var matching = Context.Users.Where("it.Name LIKE 'rodrigo%otavio%diniz%waltenberg'"); 
+2

A travaillé! Merci! –

+0

Apparemment, cela a cessé de fonctionner avec EF 6 – Tod

2

Cela devrait faire l'affaire.

from u in context.users 
    where System.Data.Linq.SqlClient.SqlMethods.Like(
     u.Name, 
     "rodrigo%otavio%diniz%waltenberg") 
    select u 

Edit:
Il se trouve cela ne fonctionne avec LINQ2SQL, non LINQ2Entities. Linq SqlMethods.Like fails suggère que vous pouvez utiliser Where directement sur la table.

+3

Exception: LINQ to Entities ne reconnaît pas la méthode 'Boolean Like (System.String, System.String)', et cette méthode ne peut pas être traduite dans une expression de magasin. –

+0

@Rodrigo: Hmmm, l2e fonctionne à près de l2s pour être déroutant ... J'ai mis à jour ma réponse avec un linq à une autre question qui pourrait être utile. –

-1

Que diriez-vous en utilisant des expressions régulières avec votre déclaration LINQ? Quelque chose comme ce qui suit:

 RegularExpressions.Regex p 
      = new RegularExpressions.Regex("rodrigo%otavio%diniz%waltenberg"); 

     using (DataContext.MyDataContext context = new MyDataContext()) 
     { 
      var result = from u in context.users 
         where p.IsMatch(u.name) 
         select u; 
     } 
+4

Exception: LINQ to Entities ne reconnaît pas la méthode 'Boolean IsMatch (System.String)', et cette méthode ne peut pas être traduite dans une expression de magasin. –