需要 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));