2013-01-18 19 views
25

Olası Çoğalt:
LINQ Contains Case InsensitiveVarlık Çerçevesi - büyük/küçük harfe duyarsız İçerikler İçeriyor?

ben aşağıdaki kodu kullandıkça, ToUpper veya tolower içermeyen bu soruna bir çözüm istiyoruz; StringComparison.CurrentCultureIgnoreCase kullanmanın C# çözümü çalışmıyor bu yüzden

var upper = term.ToUpper(); 
using (var db = this.DataContext) 
{ 
    return db.Counties.Where(x => x.CountyName.ToUpper().Contains(upper)).ToList(); 
} 

ben çerçevesini entitly kullanıyorum. Equals, EndsWith ve StartsWith için çalışır, ancak Contains.

+0

Belki de bu cevabı orada istihdam biridir: http://stackoverflow.com/a/444818/3312 [LINQ Vaka duyarsız İçeriyor] (içinde –

+0

olası yinelenen http://stackoverflow.com/questions/ 3360772/linq-içerir-büyük/küçük harf duyarlı) veya [Büyük/küçük harf duyarsız (dize)] (http://stackoverflow.com/questions/444798/case-insensitive-containsstring) –

+1

Hiçbiri geçerli değildir. Sorunun ikinci paragrafında işaret etmeye çalıştığım gibi bu çözümler taraf çerçevesinde çalışmaz. – arame3333

cevap

-3

Tıpkı Ef6 ve Sql Server kullanan ve Contains benim durumumda duyarsız durumda olan LIKE '%@p0%' eşleştirilmiş upper

using (var db = this.DataContext) 
      { 
       return db.Counties 
         .Where(x => x 
         .CountyName.ToLower() 
         .Contains(upper.ToLoWer())).ToList(); 
      } 
+4

Eğer bu soruyu okursanız, bunu cevap olarak kullanmak istemediğime işaret ediyorum. – arame3333

+0

Şu an bu bulabildiğim tek cevap bu mu? – Zapnologica

+3

Bu cevap bana yardımcı oldu haha ​​... Sadece alt yerine alt yerine geçtim .. teşekkürler dostum! – bboyle1234

3

den .ToLoWer() ekleyin. Benim durumumda:

db.Counties.Where(x => x.CountyName.Contains(term)).ToList(); 

gerektiği gibi çalışır. Daha fazla bilgi için Sjoerd answer.

+1

Sizin durumunuzda sadece Case Insensitive DB harmanlamasını yapılandırdığınız anlamına gelir. Ne fazla ne eksik. – Tomas

+0

Durumumda, sorgunuzu çalıştırabilir ve büyük/küçük harfe duyarlıdır. Bu yüzden düşündüm ki @Tomas düşündü, ama EF belirleyebileceği bir özellik ekleyebilirse harika olurdu. Çünkü biri 1 sorguda büyük/küçük harfe duyarlı olabilir ve daha sonra başka birisine duyarsız davranabilir. – Zapnologica

5

bu değil doğrudan EF ile ilişkili olduğunu biliyorum ama aklıma gelen tek çözüm Vaka duyarsız örn olmak DB tablo sütun harmanlama değiştirmek için:

ALTER TABLE TABLENAME ALTER COLUMN COLUMNNAME nvarchar(100) COLLATE Latin1_General_CI_AS NULL 

CI - harf duyarsız/ CS - harf duyarlı

AS - vurgu duyarlı/ AI - duyarsız aksan tablo sütunun harmanlama değiştiremezsiniz Eğer co zorlayarak ile EF'den doğrudan sorgusu kullanabilirsiniz

(aynı zamanda yararlı olabilir) llation

select * 
from table 
where country collate Latin1_General_CI_AS != @country