谓词生成器的通用方法

本文关键字:方法 谓词 | 更新日期: 2023-09-27 18:11:00

我使用LinqPad Predicatebuilder生成基于动态输入的Linq-query。在代码中,我有很多if-case来检查输入是否有特定属性的值,像这样:

if (!string.IsNullOrEmpty(searchInput.modelname))
{
    searchPredicate = searchPredicate.And(stock => stock.ModelName.ToLower().Equals(searchInput.modelname.ToLower()));
}

是否有一种方法来创建一个通用的方法上,我可以只调用股票属性的值和名称?如:

searchPredicate = AddAndPredicate(searchInput.modelName, "ModelName", searchPredicate)

谓词生成器的通用方法

您可以创建一个简单的方法,它接受一组参数和一个delegate到一个Func<T, TObject>,它将评估您的条件。我将为您准备一个简单的例子。这不是一个完整的通用解决方案,但应该是可重用的非常好。