传入Func到LINQ哪里
本文关键字:LINQ 哪里 bool Func 传入 | 更新日期: 2023-09-27 18:09:41
嗨,我有一个简单的存储库层,方法如下:
public Questionnaire GetQuestionnaire(Expression<Func<Question, bool>> predicateFunc)
{
return new Questionnaire
{
Title = "Geography Questions",
Questions = GetQuestionnaireData().Where(predicateFunc.Compile()).ToList()
};
}
这是对内存中名为'GetQuestionnaireData()'的IEnumerable集合的查询
然而,从上面的方法签名中,我使用了Expression> predicateFunc。然后我在linq查询的where子句中使用predicateFunc.Compile.
我的问题是:是否有可能在不使用表达式和Delegate .compile的情况下将Func Delegate传递给linq where子句?
也许这可以使用@IEnumerable.Select(somePredicateFunc) ?
当然,只要去掉表达式:
public Questionnaire GetQuestionnaire(Func<Question, bool> predicateFunc)
{
return new Questionnaire
{
Title = "Geography Questions",
Questions = GetQuestionnaireData().Where(predicateFunc).ToList()
};
}
可以。可能是您以前没有测试过,或者您的问题中有一些其他的规格,您没有在这里显示。看看这个代码示例:
static void Main(string[] args)
{
Test(i => i > 3);
}
static void Test(Func<int, bool> f)
{
IEnumerable<int> k = new [] {5, 4, 3, 22,1};
foreach (var i in k.Where(f))
Console.WriteLine(i);
}
希望能有所帮助。