您如何根据不同的变量状态在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)) ...);