2010-10-20 12 views
6

Ich weiß, dass die .Contains() Methode funktioniert wie LIKE %therm%, die .StartsWith() Methode funktioniert wie LIKE therm% und die .EndsWith() Methode wie LIKE %therm aber ...LIKE mit Linq to Entities

Gibt es eine Möglichkeit, wie unten auf **Linq to Entities** zu tun?

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

PS: Ich benutze LINQ to ENTITIES. NICHT LINQ TO SQL

+0

Mögliche Duplikat [? Wie SQL 'LIKE' mit LINQ to Entities verwenden] (http://stackoverflow.com/questions/3095781/how-to-use-sql-like -with-linq-to-entities) –

Antwort

2

Ja, you can do this with ESQL/Query Builder Syntax:

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

Gearbeitet! Vielen Dank! –

+0

Anscheinend funktioniert dies nicht mehr mit EF 6 – Tod

2

Dies sollte den Trick tun.

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

Edit:
Es stellt sich heraus, das funktioniert nur mit LINQ2SQL, nicht LINQ2Entities. Linq SqlMethods.Like fails schlägt vor, dass Sie Where direkt auf dem Tisch verwenden können.

+3

Ausnahme: LINQ to Entities erkennt die Methode 'Boolean Like (System.String, System.String)' nicht und diese Methode kann nicht in einen Speicherausdruck übersetzt werden. –

+0

@Rodrigo: Hmmm, l2e funktioniert, um zu l2s zu schließen, um verwirrend zu sein ... Ich aktualisierte meine Antwort mit einer Linq zu einer anderen Frage, die hilfreich sein könnte. –

-1

Wie über reguläre Ausdrücke mit LINQ-Anweisung? Etwas wie folgt aus:

 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

Ausnahme: LINQ to Entities erkennt die Methode 'Boolean IsMatch (System.String)' nicht, und diese Methode kann nicht in einen Ausdruck Speicher übersetzt werden. –