即使没有大写字母,我也需要SearchBar给出相同的结果。
这是我用来过滤的代码:
myList.ItemsSource = wasteList.Where(x => x.WasteType.Contains(e.NewTextValue));
我也尝试了以下方法,但是SearchBar的结果仍然不同:
myList.ItemsSource = wasteList.Where(x => x.WasteType.ToLower.Contains(e.NewTextValue));
myList.ItemsSource = wasteList.Where(x => x.WasteType.ToUpper.Contains(e.NewTextValue));
请,有没有人不让SearchBar不区分大小写?
答案 0 :(得分:1)
同时将两个值设为ToLower(或ToUpper),然后将它们进行比较:
myList.ItemsSource = wasteList.Where(x => x.WasteType.ToLower.Contains(e.NewTextValue.ToLower));
答案 1 :(得分:0)
您是否尝试过将System.Globalization
中的CompareInfo Class
与CompareOptions.IgnoreCase
进行不区分大小写的比较?
CultureInfo culture = new CultureInfo("en-US");
myList.ItemsSource = wasteList.Where(x => culture.CompareInfo.IndexOf(x, e.NewTextValue, CompareOptions.IgnoreCase) >= 0);
答案 2 :(得分:0)
最终,SearchBar
与大小写无关,它只是为您提供UI和Bindings / events以便能够自己处理过滤。您需要做的是在过滤列表时执行不区分大小写的string
比较。
一种不错的方法是使用类似以下扩展方法的方法:
public static bool Contains(this string source, string value, StringComparison comparison)
{
return source?.IndexOf(value, comparison) >= 0;
}
然后使用它,您只需要使用:
myList.ItemsSource = wasteList.Where(x => x.WasteType.Contains(e.NewTextValue, StringComparison.OrdinalIgnoreCase));