2010-10-20 17 views
6

.Contains() yönteminin LIKE %therm% gibi olduğunu biliyorum, .StartsWith() yöntemi LIKE therm% ve LIKE %therm gibi .EndsWith() metodunu kullanır ama ...Linq'den Varlıklara Gibi

**Linq to Entities**'da aşağıdaki gibi bir yol var mı?

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

PS: LINQ'YE ENTITIES'I KULLANIRIM. SQL

için LINQ NOT
+0

Olası kopyalar [? LıNQ varlıkları ile SQL 'LIKE' nasıl kullanılır] (http://stackoverflow.com/questions/3095781/how-to-use-sql-like: Aşağıdaki gibi bir şey -with-linq-to-entities) –

cevap

2

Evet, you can do this with ESQL/Sorgu Oluşturucu sözdizimi:

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

Çalışıyor! Teşekkürler! –

+0

Görünüşe göre bu, EF 6 – Tod

2

NOT LINQ Trick yapmalısınız.

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

Düzenleme:
O Linq2SQL ile bu sadece eserler değil LINQ2Entities çıkıyor. Linq SqlMethods.Like fails, doğrudan masaüstünde Where kullanabileceğinizi önerir.

+3

İstisna: Varlıklar LINQ 'Boolean Like (System.String, System.String)' yöntemini tanımıyor ve bu yöntem bir mağaza ifadesine dönüştürülemiyor. –

+0

@Rodrigo: Hmmm, l2e kafa karıştırıcı olmak için l2'lere yakın çalışıyor ... Cevabımı, bir linq ile, yardımcı olabilecek başka bir soruya güncelledim. –

-1

Nasıl LINQ deyimi ile düzenli ifadeleri kullanmaya ne dersiniz?

 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; 
     } 
ait
+4

ile çalışmayı durdurdu. Exception: LINQ to Entities, 'Boolean IsMatch (System.String)' yöntemini tanımıyor ve bu yöntem bir mağaza ifadesine dönüştürülemiyor. –