我有一个用于过滤列表框结果的文本框,如果我输入所有大写字母,它将不会返回任何内容,但所有较低的将会返回。我想看看我是否错过了什么。这是我正在使用的。
由于
private void Filter(object sender, FilterEventArgs e)
{
var src = e.Item as Users;
if (src == null)
e.Accepted = false;
//else if (src.Name!= null && !src.Name.Contains(Search))
else if (src.Name!= null && !src.Name.ToLower().Contains(Search))
e.Accepted = false;
}
答案 0 :(得分:2)
将您的搜索更改为小写
else if (src.Name!= null && !src.Name.ToLower().Contains(Search.ToLower()))
e.Accepted = false;
答案 1 :(得分:2)
内部string.Contains是使用IndexOf和OrdinalCompare枚举来实现的
因此,您的代码可以更改为使用简单的IndexOf
,而不会产生返回原始字符串的新副本的ToLower
方法所需的惩罚。
if (src == null || string.IsNullOrEmpty(src.Name))
e.Accepted = false;
else if (src.Name.IndexOf(Search, StringComparison.CurrentCultureIgnoreCase) < 0)
e.Accepted = false;
Strings are immutable,这意味着一旦创建,您就无法更改字符串
像ToLower
这样的方法实际上创建了一个新的字符串对象来保存小写类型的新字符序列,并返回该新对象。