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 に答える