gpt4 book ai didi

c# - 如何将 Expression> 转换为 Predicate

转载 作者:IT王子 更新时间:2023-10-29 03:52:21 24 4
gpt4 key购买 nike

我有一个接受 Expression<Func<T, bool>> 的方法作为参数。我想将它用作 List.Find() 方法中的谓词,但我似乎无法将其转换为 List 采用的谓词。您知道执行此操作的简单方法吗?

public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
var list = GetList<T>();

var predicate = [what goes here to convert expression?];

return list.Find(predicate);
}

更新

结合 tvanfosson 和 280Z28 的答案,我现在正在使用这个:

public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
var list = GetList<T>();

return list.Where(expression.Compile()).ToList();
}

最佳答案

Func<T, bool> func = expression.Compile();
Predicate<T> pred = t => func(t);

编辑:根据评论,我们对第二行有更好的答案:

Predicate<T> pred = func.Invoke;

关于c# - 如何将 Expression<Func<T, bool>> 转换为 Predicate<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com