我的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 是我用于文字过滤器的文本框的控件名称
我想要做的是设置一些内容,以便我删除区分大小写,以便缓存与我的关键字匹配的所有条目,无论我如何键入它。我该怎么做呢?
答案 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);
}