嗨,我有一个简单的存储库层,其方法如下:
public Questionnaire GetQuestionnaire(Expression<Func<Question, bool>> predicateFunc)
{
return new Questionnaire
{
Title = "Geography Questions",
Questions = GetQuestionnaireData().Where(predicateFunc.Compile()).ToList()
};
}
这是针对名为“ GetQuestionnaireData()”的内存中的IEnumerable集合进行查询
但是,从上述方法签名中,我正在使用Expression> predicateFunc。然后我通过predicateFunc.Compile在linq查询的where子句中使用它。
我的问题是:是否可以在不使用Expression和委托.compiler的情况下将Func委托传递给linq where子句?
也许可以使用@ IEnumerable.Select(somePredicateFunc)吗?
最佳答案
当然,只需删除表达式:
public Questionnaire GetQuestionnaire(Func<Question, bool> predicateFunc)
{
return new Questionnaire
{
Title = "Geography Questions",
Questions = GetQuestionnaireData().Where(predicateFunc).ToList()
};
}