6

私は C# Windows 8 Metro アプリで作業しておりObservableCollection<T>、プロパティに文字列が含まれている LINQ を使用してフィルター処理しようとしています。大文字と小文字を区別しないようにする必要があります。

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

私は回避する

  • Using string1.Contains(string2).ToUpper()両方の文字列で。
  • 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).

しかし、この方法はどれも大文字と小文字を区別しない方法で機能しません。名前を正しく記述すれば問題なく機能します。

誰かがWindows 8で同じ問題を抱えていますか??

提供されたヘルプに事前に感謝します。

4

2 に答える 2

1

独自の拡張メソッドを作成する

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

アプリケーションで使用する

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

それが私がしたことです。

于 2012-10-17T15:19:23.053 に答える
0

これを試して:

var searchResults = from _rest in App.ViewModel.Restaurants
                         where  _rest.Name.IndexOf(queryText,
                                     StringComparison.InvariantCultureIgnoreCase) >= 0
                         select _rest;
于 2012-06-21T13:06:49.050 に答える