在不存在集合的情况下撰写筛选器

本文关键字:筛选 情况下 不存在 集合 | 更新日期: 2023-09-27 18:35:39

我想我可能在这里遇到了暂时的精神故障,所以请原谅我,如果这是一个愚蠢的问题,但我想知道是否可以组合过滤器,以便它们可以应用于集合:

    static void Main(string[] args)
    {
        int[] a = { 1, 2, 3, 4 };
        Func<int, bool> filter = GetFilter();
        IEnumerable<int> result = a.Where(filter);
    }
    private static Func<int, bool> GetFilter()
    {
        Func<int, bool> filter = c => c % 2 == 0;
        // What if I wanted to further refine my filter here?
        // For instance, add a ceiling of 10
        return filter;
    }

在不存在集合的情况下撰写筛选器

我相信

您必须添加对原始过滤器的引用以避免递归调用。

var previousFilter = filter;
filter = c => previousFilter(c) && c <= 10;
return f => c <= 10 && filter(c);