需要 SearchBar 给出相同的结果,即使它的大写字母与否
Need SearchBar to give same result even if its capital letters or not
我需要 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 none 区分大小写吗?
将两个值设为 ToLower(或 ToUpper)然后比较它们:
myList.ItemsSource = wasteList.Where(x => x.WasteType.ToLower.Contains(e.NewTextValue.ToLower));
您是否尝试过使用 CompareInfo Class
of System.Globalization
with CompareOptions.IgnoreCase
进行不区分大小写的比较?
CultureInfo culture = new CultureInfo("en-US");
myList.ItemsSource = wasteList.Where(x => culture.CompareInfo.IndexOf(x, e.NewTextValue, CompareOptions.IgnoreCase) >= 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));
我需要 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 none 区分大小写吗?
将两个值设为 ToLower(或 ToUpper)然后比较它们:
myList.ItemsSource = wasteList.Where(x => x.WasteType.ToLower.Contains(e.NewTextValue.ToLower));
您是否尝试过使用 CompareInfo Class
of System.Globalization
with CompareOptions.IgnoreCase
进行不区分大小写的比较?
CultureInfo culture = new CultureInfo("en-US");
myList.ItemsSource = wasteList.Where(x => culture.CompareInfo.IndexOf(x, e.NewTextValue, CompareOptions.IgnoreCase) >= 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));