我已经读过在扩展方法中建议使用函数而不是谓词,所以我试图这样做。
public static void Insert<T>(this ObservableCollection<T> paramOC, T NewElement, Func<T, T, bool> condition)
{
//code
}
我试图以这种方式使用:
myOC.Insert(myNewElement, e=>e.Name.CompareTo(myNewElement.Name) > 0));
但是我收到一条错误,指出删除System.Func不带1个参数。
但是,如果我使用函数的谓词intead,它就可以工作。
我错过了什么?
非常感谢。
答案 0 :(得分:3)
您需要Func<T,bool>
(需要一个参数并返回bool
),而不是Func<T,T,bool>
Predicate<T>
有效,因为它接受一个参数并返回bool
,因此它与 lambda表达式匹配。Func<T,T,bool>
需要两个参数并返回bool,它不会#39; t与你的表达式匹配,因此错误。
答案 1 :(得分:1)
您的Func<T,T,bool>
需要2个参数并返回bool
你有两个选择
Func<T,bool>
(e1,e2) => ..