【问题标题】:Make predicate datagridview filtering case insensitive c#使谓词datagridview过滤不区分大小写c#
【发布时间】:2020-02-19 08:52:17
【问题描述】:

我发现这篇关于在数据网格中过滤的好帖子 (Filter a DataGrid in WPF),到目前为止它运行良好。但我对此有一个小问题。它区分大小写。由于我不熟悉“谓词”,因此我需要您的帮助。

我的列表 (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# datagridview predicate


【解决方案1】:

我会假设(无法测试 C#),就像将 .ToLower() 添加到集合项字符串和搜索字符串一样简单。在这里,它被应用于代码中的一行:

var myFilter = new Predicate<object>(item => ((ProductRow)item).ProductName.ToLower().Contains(searchTerm.ToLower()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2013-10-24
    • 2022-12-02
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多