c# - 根据多个条件过滤 CollectionView

标签 c# wpf

我有一个带有搜索文本框的 WPF 应用程序,Listview 绑定(bind)到 ICollectionView。我可以根据 texbox 值过滤 ICollectionView,但是我有兴趣通过传递以逗号分隔的多个值来扩展功能,并对集合应用多个过滤。

 var filterStrings= TextBoxValue.Split(',');

 MyCollectionView.Filter = m => 
     (((MyObject)m).myProperty.ToLower().ContainsAll(filterStrings) 

其中 ContainsAll 是扩展

 public static bool ContainsAll(this string source, params string[] values)
 {
      return values.All(x => source.Contains(x));
 }

过滤器不包含多个结果,知道为什么吗?谢谢

编辑

该集合具有简单的字符串值(Bob、Bin、Grey、Fin、Fantastic、Shell),我想提供一个过滤器,例如(B,F) 并得到上述值的结果 (Bob,Bin,Fin,Fantastic)

最佳答案

在这种情况下 .All 意味着:它也包含 B 和 F(和条件)

但你需要.Any(或条件)

public static bool ContainsAll(this string source, params string[] values)
{
    return values.Any(x => source.Contains(x));
}

关于c# - 根据多个条件过滤 CollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033735/

相关文章:

c# - csproj中文件夹标签的含义是什么

c# - 单元测试asp.net mvc restful routing FormatResult

c# - 如何在 html 文档中包含 html 代码?

wpf - Idataerrorinfo 中如何调用索引器?

wpf - WPF 中是否有预制的调色板

javascript - 正则表达式不允许字符串中出现 2/3/4 个连续零

c# - LambdaExpression.Compile 和 Delegate.CreateDelegate 之间的区别

wpf - 如何按 z-index 对 Windows 进行排序?

c# - Xamgrid 刷新或重新应用过滤器

WPF:IEditableCollectionView 和 CanAddNew 和空集合