我已經在一個單獨的C#項目重新創建Predicatebuilder類,我想在VB.NET項目中使用它,但我不斷收到以下錯誤:使用PredicateBuilder用VB.NET
Overload resolution failed because no accessible 'Or' accepts this number of arguments.
時我用它像這樣:
Dim predicate = PredicateBuilder.False(Of t_Quote)()
predicate = predicate.Or(Function(q) q.iQuoteType = iQuoteType)
的relivant項目被引用,我使用的是正確的進口聲明,這一切編譯沒有任何錯誤。
任何想法,我要去哪裏錯了?
這是在C#中PredicateBuilder類我使用:
public static class PredicateBuilder { public static Expression> True() { return f => true; } public static Expression> False() { return f => false; }
public static Expression<Func<T, bool>> Or<T>(this
Expression> expr1, Expression> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); return Expression.Lambda> (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters); }
public static Expression<Func<T, bool>> And<T>(this
Expression> expr1, Expression> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); return Expression.Lambda> (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters); } }
不知道你自己的API,它不可能給這個問題的答案。發佈代碼的C#版本,或將簽名發佈到PredicateBuilder.Or方法。 – Juliet 2009-10-01 22:26:31