问题描述
我在尝试将 Predicate<T>
转换为 Func<T,bool>
时遇到问题。我有一个接受 object[]
变量作为参数的方法:
protected abstract Predicate<TResults> PredicateFind(object[] values);
它非常适合List.Find
:
protected TResults Find(params object[] values) => Resultados.Find(PredicateFind(values));
但尝试将其与 List.Any
一起使用:
protected TResults Any(params object[] values) => Resultados.Any(r => new Func<TResults,bool>(x => (bool)PredicateFind(values) == true));
给出:
CS0030: Cannot convert type 'System.Predicate<TResults>' to 'bool'
尝试将其更改为
protected TResults Any(params object[] values) => Resultados.Any(PredicateFind(values));
给出:
CS1503: Argument 2: cannot convert from 'System.Predicate<TResults>' to 'System.Function<TResults,bool>'
并将其更改为
protected TResults Any(params object[] values) => Resultados.Any(new Func<TResults,bool>(PredicateFind(values)));
给予
CS0029: Cannot implicitly convert type 'bool' to 'TResults'
我应该如何调用 Predicate(object[] values)
才能将它与 Any
一起使用?
谢谢
编辑
问题终于来了
protected TResults Any(params object[] values) => Resultados.Any(PredicateFind(values));
首先我必须将返回类型更改为 bool
protected bool Any(params object[] values) => Resultados.Any(PredicateFind(values));
其次我不得不将参数更改为 r => PredicateFind(values).Invoke(r)
protected bool Any(params object[] values) => Resultados.Any(r => PredicateFind(values).Invoke(r));
现在已经修复了。
谢谢大家。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)