我正在使用C#Windows 8 Metro应用程序,我正在尝试使用LINQ过滤ObservableCollection<T>
,其中属性包含一些字符串,我需要它不区分大小写。
var searchResults = from _rest in App.ViewModel.Restaurants
where _rest.Name.IndexOf(queryText,
StringComparison.CurrentCultureIgnoreCase) >= 0
select _rest;
我的工作
Using string1.Contains(string2).ToUpper()
。Using string1.Contains(string2).ToLower()
。Using string1.IndexOf(string2, StringComparison.CurrentCultureIgnoreCase) >= 0
。Using string1.IndexOf(string2, StringComparison.OrdinalIgnoreCase) >= 0
。Using String.Compare(string1, string2, StringComparison.CurrentCultureIgnoreCase)
。但是这个方法中没有一个以不区分大小写的方式为我工作,如果我正确地写了这个名字,那就行得正常。
有人在Windows 8中遇到同样的问题吗?
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
编写自己的扩展方法
public static class MetroHelper
{
public static bool ContainsInvariant(this string mainText, string queryText)
{
return mainText.ToUpperInvariant().Contains(queryText.ToUpperInvariant());
}
}
并在您的申请中使用
var searchResults = from _rest in App.ViewModel.Restaurants
where _rest.Name.ContainsInvariant(queryText)
select _rest;
这就是我所做的。
答案 1 :(得分:0)
试试这个:
var searchResults = from _rest in App.ViewModel.Restaurants
where _rest.Name.IndexOf(queryText,
StringComparison.InvariantCultureIgnoreCase) >= 0
select _rest;