2010-09-24 14 views
9

के लिए एक लैम्ब्डा अभिव्यक्ति को देखते हुए निम्नलिखितकैसे 'नहीं' इकाई की रूपरेखा

Expression<Func<T,bool>> matchExpression; 

मैं कैसे एक और अभिव्यक्ति है कि मौजूदा एक की है एक 'नहीं' बना सकते हैं।

मैं

Expression<Func<T, bool>> func3 = (i) => !matchExpression.Invoke(i); 

की कोशिश की है, लेकिन इस इकाई की रूपरेखा द्वारा समर्थित नहीं है ...

सादर

उत्तर

10

आप एक नया लैम्ब्डा पुन: बनाने, और मूल के शरीर नकारना करने के लिए है एक:

Expression<Func<T, bool>> not = Expression.Lambda<Func<T, bool>> (
    Expression.Not (matchExpression.Body), 
    matchExpression.Parameters [0]); 
+0

यह बेहतर है; मैं एक मस्तिष्क-फार्ट था; पी –

+1

(आप बस मैच एक्सपेरियन में पास हो सकते हैं। पैरामीटर - यह वही होगा) –

+0

@Marc: निश्चित बात। लेकिन उस विशिष्ट मामले में, मुझे यह पसंद है कि यह एक पैरामीटर के साथ भविष्यवाणी को अस्वीकार करने का इरादा व्यक्त करता है। –

संबंधित मुद्दे