需要SearchBar给出相同的结果,即使它不是大写字母也是如此

时间:2018-07-10 12:02:21

标签: c# xamarin xamarin.forms searchbar

即使没有大写字母,我也需要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不区分大小写?

3 个答案:

答案 0 :(得分:1)

同时将两个值设为ToLower(或ToUpper),然后将它们进行比较:

myList.ItemsSource = wasteList.Where(x => x.WasteType.ToLower.Contains(e.NewTextValue.ToLower));

答案 1 :(得分:0)

您是否尝试过将System.Globalization中的CompareInfo ClassCompareOptions.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));