我有一个带有搜索文本框的 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/