Linq ObservableCollection没有返回结果

时间:2012-10-22 02:05:39

标签: c# linq

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

编辑:

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

2 个答案:

答案 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));