日期:2014-05-18 浏览次数:20822 次
//比如有以下5个条件 Func<string, bool> Filter1 = x => x.Distinct().Count() == 3 && x.Any(y => data1.Contains(y)); Func<string, bool> Filter2 = x => x.Distinct().Count() == 3 && x.Any(y => data2.Contains(y)); Func<string, bool> Filter3 = x => x.Distinct().Count() == 3 && x.Any(y => data3.Contains(y)); Func<string, bool> Filter4 = x => x.Distinct().Count() == 3 && x.Any(y => data4.Contains(y)); Func<string, bool> Filter5 = x => x.Distinct().Count() == 3 && x.Any(y => data5.Contains(y)); //现在欲求其中任意满足2-3个条件交集输出 //此时,就是5个条件中任选2个进行交集,任选3个进行交集,再把两个交集做并集 Func<string, bool> Filter = x => true; Filter = x => Filter1(x) && Filter2(x) + Filter1(x) && Filter3(x)+.....+Filter3(x) && Filter4(x)&& Filter5(x);//问题1:并集是否不对??有没有更好的方法? var result = Enumerable.Range(0, 200).Where(x => Filter(x.ToString().PadLeft(3, '0'))); 问题2:5个中任选2-3个条件的组合已经很多了,如果改成100个任选10-15个条件呢?估计就崩溃了,求一通用、简化算法。