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

C# 禁用我的关键字搜索区分大小写,c#,wpf,C#,Wpf,我的wpf应用程序中有一个文本搜索过滤器。但是,当我进行字符串比较以检查它是否包含诸如“哦,比如说“error”之类的流行语时,我希望它使用包含error关键字的所有条目更新/刷新我的datagrid;无论我在搜索框中键入了Error、Error或Error 这是我的密码: public class Foo { private void GetFilteredResults(MessageDetails detail, FilterEventArgs e) { foreach

我的wpf应用程序中有一个文本搜索过滤器。但是,当我进行字符串比较以检查它是否包含诸如“哦,比如说“error”之类的流行语时,我希望它使用包含error关键字的所有条目更新/刷新我的datagrid;无论我在搜索框中键入了Error、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是一个结构,它在可观察集合中保存实际的消息值

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


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

假设有一个布尔属性
区分大小写
标识搜索模式。然后可以使用
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);
}

txtFilterValue.Text.ToUpper()
txtFilterValue.Text.ToLower()
若要将字符串仅转换为大写或小写,请在更新时将其设置为查询。非常感谢你。你应该得到这些分数!