C# 禁用我的关键字搜索区分大小写
我的wpf应用程序中有一个文本搜索过滤器。但是,当我进行字符串比较以检查它是否包含诸如“哦,比如说“error”之类的流行语时,我希望它使用包含error关键字的所有条目更新/刷新我的datagrid;无论我在搜索框中键入了Error、Error或Error 这是我的密码:C# 禁用我的关键字搜索区分大小写,c#,wpf,C#,Wpf,我的wpf应用程序中有一个文本搜索过滤器。但是,当我进行字符串比较以检查它是否包含诸如“哦,比如说“error”之类的流行语时,我希望它使用包含error关键字的所有条目更新/刷新我的datagrid;无论我在搜索框中键入了Error、Error或Error 这是我的密码: public class Foo { private void GetFilteredResults(MessageDetails detail, FilterEventArgs e) { foreach
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()
若要将字符串仅转换为大写或小写,请在更新时将其设置为查询。非常感谢你。你应该得到这些分数!