我正在使用linq在ObservableCollection中搜索产品,但它没有返回任何结果,例如我有一个产品名称“stack”,但是当我搜索“s”时,它没有返回结果:
private ObservableCollection<Product> _ProductList = new ObservableCollection<Product>();
public ObservableCollection<Product> ProductList
{ get { return _ProductList; } set { _ProductList = value; } }
我有一个文本框,当用户输入时,linq将在ObservableCollection中搜索产品名称:
private void productSearch_KeyUp(object sender, KeyEventArgs e)
{
// Search text
string productSearchText = productSearch.Text.Trim();
// Search product, return no result
var search = ProductList.Where(s => s.Name.StartsWith(ProductSearchText));
search.ToList().ForEach(ProductList.Add);
}
编辑:
我注意到这是因为字母问题。我需要大写,如果产品名称是大写的,我如何搜索字母大小写?
答案 0 :(得分:1)
如果问题出在区分大小写的情况下,您可以尝试使用此
s.Name.ToUppper().StartsWith(ProductSearchText));
或者您也可以尝试这个
s.Name.ToUppper().StartsWith(ProductSearchText, StringComparison.OrdinalIgnoreCase));
你可能想要像这样使用搜索foreach
foreach(var item in search)
{
// get a search item and do what you want with it
}
答案 1 :(得分:1)
要执行不区分大小写的搜索,请使用此方法的另一个重载:
var search = ProductList.Where(s => s.Name.StartsWith
(ProductSearchText,StringComparison.CurrentCultureIgnoreCase));