111,126
社区成员
发帖
与我相关
我的任务
分享
//比如有以下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个条件呢?估计就崩溃了,求一通用、简化算法。
filter = x => new bool[] { filter1(x), filter2(x), filter3(x), filter4(x), filter5(x) }.Where(y => y).Count() > 2