c# - 使谓词datagridview过滤不区分大小写c#
问题描述
我发现这篇关于在数据网格中过滤的好帖子(在 WPF 中过滤 DataGrid),到目前为止它工作得很好。但我对此有一个小问题。它区分大小写。由于我不熟悉“谓词”,因此我需要您的帮助。
我有我的列表(allProductRows),其中包含模型“ProductRows”[ID,artNr,ProductName]
例如:[2,123,“软件 Alpha”]
我的搜索查询在这里:
private void searchBox_TextChanged(object sender, TextChangedEventArgs e)
{
filterDataGrid(tb_searchBox.Text);
}
/// <summary>
/// Filter DataGrid to specific Term (atm Case Sensitive)
/// </summary>
/// <param name="searchTerm">SearchTerm String</param>
private void filterDataGrid(string searchTerm)
{
var _itemSourceList = new CollectionViewSource() { Source = allProductRows };
ICollectionView Itemlist = _itemSourceList.View;
var myFilter = new Predicate<object>(item => ((ProductRow)item).ProductName.Contains(searchTerm));
Itemlist.Filter = myFilter;
dg_products.ItemsSource = Itemlist;
}
感谢@Wiimax提供上面的代码
(为什么它在一个单独的空白中,是由于其他地方的其他执行)
在这种状态下,我输入到文本框中的所有内容都会被正确过滤,但区分大小写。
解决方案
我会假设(无法测试 C#),它就像添加.ToLower()
到集合项字符串和搜索字符串一样简单。在这里,它应用于代码中的一行:
var myFilter = new Predicate<object>(item => ((ProductRow)item).ProductName.ToLower().Contains(searchTerm.ToLower()));