将筛选器存储在自定义集合中并有条件执行

本文关键字:有条件 执行 集合 自定义 筛选 存储 | 更新日期: 2023-09-27 18:25:08

我有一个包含对象集合的Cusom集合对象。然后,我将两个UI元素(网格和图表)绑定到这个对象。网格显示所有对象,图表显示同一集合的子集。

我想做的是在集合中注册一个过滤器(Func<>?),并有条件地执行过滤器以创建子集集合。

真的不知道该怎么处理。任何建议都会很有帮助。

将筛选器存储在自定义集合中并有条件执行

您只需传入Func<>转换为Where()静态方法。输出将是一个新的IEnumerable集合,您可以将其绑定到UI元素。您注册的函数的类型必须为Func<ItemInYourCollection, Boolean>

如果你想在使用过滤器和不使用过滤器之间切换,使用"非过滤"功能可能最简单:

Func<ItemInYourCollection, Boolean> filter = (a) => true;
if(filtering) filter = registeredFilter;
UI.Data = rawData.Where(filter);

您可以使用LINQ Where扩展方法或基于语法的查询来指示应该在该图表中放置哪些元素。只有当您的集合实现IEnumculable接口时,这才有可能。

Where扩展方法的一个例子可能是这样的:

var filteredItem = items.Where(i => i.type == typeYouLookFor)

它使用lambda表达式,所以您不必声明任何其他函数。