在c#中,有一种优雅的方法可以将方差应用于lambda表达式

本文关键字:方法 方差 表达式 lambda 应用于 一种 | 更新日期: 2023-09-27 18:09:48

我的应用程序使用谓词生成器简化了多条件搜索。假设其中一个标准允许用户指定他们想要在房子里有多少个浴室。

我可以使用谓词生成器并从数据库房屋中检索具有等于用户指定的卧室数量的房屋:

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);

或者上述方法是否有效?

在c#中,有一种优雅的方法可以将方差应用于lambda表达式

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

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