您如何根据不同的变量状态在linq中链接“ Where”子句。
E,g;年龄范围(21-30、31-40、41-50、51-60、60>)的复选框

我们有一个List<People>“人”,我们需要根据复选框对其进行过滤。假设List不能只是IEnumerable,因为它已经被评估

除了这样做:

List<People> filteredPeople = new List<people>();
if(CB1.checked)
    filteredPeople = filteredPeople.Union(People.Where(inTheirTwenties))  //assuming method  inTheir20s filters correct
if(CB2.checked)
    filteredPeople = filteredPeople.Union(People.Where(inTheirThirties)) ;
//...and so on


有更好的解决办法吗?

最佳答案

我将所有这些捆绑在一起成为一个Where语句,并更新inTheirTwenties方法以使单个人像这样:

filteredPeople.Where(x => (CB1.checked && inTheirTwenties(x))
|| (CB2.checked && inTheirThirties(x)) ...);

10-08 03:59