在C#中有一种优雅的方式将方差应用于lambda表达式吗?

时间:2013-04-18 16:30:59

标签: c# lambda predicatebuilder

我的应用程序使用Predicate Builder促进多标准搜索。假设其中一个标准允许用户指定他们想要在房子里找到多少个浴室。

我可以使用Predicate Builder并从数据库中检索具有多个卧室等于用户指定的房间:

predicate = predicate.And(x => x.NumberOfBathrooms == viewModel.NumberOfBathrooms);

假设我想要退回有多个浴室的房子+/- 1用户输入的内容。因此,如果输入2,将使用带有1,2和3个浴室的房屋。

以下是唯一可以实现的方法吗?

predicate = predicate.And(x => x.NumberOfBathrooms == viewModel.NumberOfBathrooms
&& x.NumberOfBathrooms == viewModel.NumberOfBathrooms - 1
&& x.NumberOfBathrooms == viewModel.NumberOfBathrooms + 1);

或者上述甚至可以工作吗?

1 个答案:

答案 0 :(得分:0)

这可能是一个很好的方式:

var y = x.NumberOfBathrooms;
predicate = predicate.And(x => new List<int>{y-1, y, y+1}.Contains(x));