You can create an IEnumerable<Func<T,bool>> , then query it for example.
Func<int,bool> isGreaterThanEight = x => x > 8; Func<int,bool> isEven = x => x % 2 == 0; Func<int,bool> hasFactorFive = x => x % 5 == 0; IEnumerable<Func<int,bool>> rules = new List<Func<int,bool>>() { isGreaterThanEight, isEven, hasFactorFive }; var nums = Enumerable.Range(1,10); var actual = nums.Where( x => rules.Any( r => r(x) ) ); Assert.That( actual, Is.EqualTo( new[]{2,4,5,6,8,9,10} ) );
source share