2017-08-22 21 views
0

私のwpfアプリケーションでテキスト検索によるフィルタがあります。しかし、私は文字列の比較を行うときに、ああ、 "エラー"のような流行語が含まれているかどうかを確認するために、私はそれを更新/エラーキーワードを持つすべてのエントリで自分のDataGridを更新したい。検索ボックスに「エラー」、「エラー」、「eRRor」と入力しても問題ありません。キーワード検索の大文字と小文字の区別を無効にする

public class Foo 
{ 
    private void GetFilteredResults(MessageDetails detail, FilterEventArgs e) 
    { 
    foreach (MessageValue value in detail.MessageValue) 
    { 
     if (value.Value.Contains(txtFilterValue.Text)) 
     { 
      //Returns true... 
     } 
    } 
    //Otherwise false 
    } 
} 

Messagedetailsはコンテナクラスであり、データグリッド列のすべての値を保持する:

はここに私のコードです。

MessageValueのObservableCollection

で実際のメッセージの値を保持する構造体には最後に、txtFilterValueは、私は私の言葉のために使用していますテキストボックスのコントロール名ですフィルタ

私がしたいことは、大文字と小文字を区別せずに、キーワードに一致するすべてのエントリをキャッシュするために大文字と小文字の区別を削除する場所に設定することですそれ。それについてどうすればいいのですか?

+0

'txtFilterValue.Text.ToUpper()'や 'txtFilterValueのようにLINQを書き込むことができます。文字列を大文字または小文字に変換するためのText.ToLower() ' –

答えて

1

CaseSensitive検索モードを識別するブール型プロパティがあるとします。そして、あなたは正しくStringComparisonを設定することにより、この問題を解決するためにstring.IndexOfを使用することができます。

StringComparison comparison = CaseSensitive ? 
    StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; 
if (value.Value.IndexOf(txtFilterValue.Text, comparison) >= 0) 
{ 
    //Returns true... 
} 

全体のクエリは、単に

private void GetFilteredResults(MessageDetails detail, FilterEventArgs e) 
{ 
    bool comparison = CaseSensitive ? 
     StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; 
    return detail.MessageValue.Any(v => v.Value.IndexOf(txtFilterValue.Text, comparison) >= 0); 
} 
+0

私はあなたがそれを更新するときにクエリとして設定を完了しました。どうもありがとうございました。あなたはそれらのポイントに値する! – mmangual83

関連する問題