禁用关键字搜索的区分大小写

时间:2017-08-22 20:10:37

标签: c# wpf

我的wpf应用程序中有一个文本搜索过滤器。但是,当我进行字符串比较以检查它是否包含类似的流行语时,哦说"错误",我希望它使用具有Error关键字的所有条目更新/刷新我的数据网格;无论我在搜索框中输入错误,错误或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 是一个容器类,包含所有datagrid行值。

MessageValue 是一个结构,用于保存 ObservableCollection

中的实际消息值

最后, txtFilterValue 是我用于文字过滤器的文本框的控件名称

我想要做的是设置一些内容,以便我删除区分大小写,以便缓存与我的关键字匹配的所有条目,无论我如何键入它。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

假设有一个布尔属性CaseSensitive标识搜索模式。然后,您可以使用string.IndexOf通过正确设置StringComparison来解决此问题:

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

整个查询可以简单地用LINQ编写,如

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);
}