2012-06-20 24 views
6

Bir C# Windows 8 Metro uygulamasında çalışıyorum ve bir özelliğin bir dizi içerdiği LINQ kullanarak bir ObservableCollection<T> filtrelemeye çalışıyorum ve büyük/küçük harfe duyarsız olmasına ihtiyacım var.LINQ dizesi başka bir dize büyük/küçük harf duyarsız içeriyor

var searchResults = from _rest in App.ViewModel.Restaurants 
        where _rest.Name.IndexOf(queryText, 
           StringComparison.CurrentCultureIgnoreCase) >= 0 
        select _rest; 

ben her iki dizeleri etrafında

  • Using string1.Contains(string2).ToUpper() çalışır. Her iki dizede de
  • Using string1.Contains(string2).ToLower().
  • Using string1.IndexOf(string2, StringComparison.CurrentCultureIgnoreCase) >= 0.
  • Using string1.IndexOf(string2, StringComparison.OrdinalIgnoreCase) >= 0.
  • Using String.Compare(string1, string2, StringComparison.CurrentCultureIgnoreCase).

Ancak bu yöntemlerden hiçbiri benim için duyarsız bir şekilde benim için işe yaramazsa, adı doğru yazıyorsam tamam çalışır.

Windows 8'de de aynı sorun var mı?

Verilen yardımlardan şimdiden teşekkür ederiz.

+5

Sorunu gösteren kısa ancak eksiksiz bir örnek verebilir misiniz? –

+1

Kıta Avrupası restoran isimleri değiller mi? ;-) – dash

+1

Örnek olarak bir .NET 4 (.0) WPF uygulamasında aynı LINQ ifadesini uygularsanız çalışır mı? –

cevap

0

bu deneyin:

var searchResults = from _rest in App.ViewModel.Restaurants 
         where _rest.Name.IndexOf(queryText, 
            StringComparison.InvariantCultureIgnoreCase) >= 0 
         select _rest; 
+0

StringComparison.InvariantCultureIgnoreCase Metro Uygulamalarında kullanılamaz. – Rotten

+0

benim için çalıştı! Teşekkürler dostum –

1

Yaz sen Uzatma Yöntemi

public static class MetroHelper 
{ 
    public static bool ContainsInvariant(this string mainText, string queryText) 
    { 
     return mainText.ToUpperInvariant().Contains(queryText.ToUpperInvariant()); 
    } 
} 

varsa ve uygulamanın ne yaptım

var searchResults = from _rest in App.ViewModel.Restaurants 
       where _rest.Name.ContainsInvariant(queryText) 
       select _rest; 

kullanmak.

İlgili konular