0

我正在使用 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);
}

编辑:

我注意到这是因为字母大小写问题。我需要大写,如果产品名称是大写的,我该如何搜索字母大小写?

4

2 回答 2

1

如果问题在于大小写敏感性,您可以尝试使用它

s.Name.ToUppper().StartsWith(ProductSearchText));

或者你也可以试试这个

s.Name.ToUppper().StartsWith(ProductSearchText, StringComparison.OrdinalIgnoreCase));

你可能想像这样使用 search foreach

foreach(var item in search)
{

    // get a search item and do what you want with it 

}
于 2012-10-22T02:16:49.963 回答
1

要执行不区分大小写的搜索,请使用此方法的另一个重载:

var search = ProductList.Where(s => s.Name.StartsWith   
          (ProductSearchText,StringComparison.CurrentCultureIgnoreCase)); 
于 2012-10-22T02:17:22.473 回答