मान लीजिए मैंBinaryExpression से अभिव्यक्ति के लिए <समारोह <T, bool>>
Expression<Func<SomeType, DateTime>> left = x => x.SomeDateProperty;
Expression<Func<SomeType, DateTime>> right = x => dateTimeConstant;
var binaryExpression = Expression.GreaterThan(left, right);
Expression<Func<SomeType, bool>> predicate =
x => x.SomeDateProperty> dateTimeConstant;
1) मैं कैसे कुछ के साथ अंतिम पंक्ति का काम के दाहिने हाथ की जगह ले सकता है की तरह कुछ है कि बजाय binaryExpression
का उपयोग करता है? var predicate = x => binaryExpression;
काम नहीं करता है।
2) right
हमेशा स्थिर रहता है, जरूरी नहीं कि डेटटाइम.अब। क्या यह कुछ सरल Expression
प्रकार का हो सकता है? उदाहरण के लिए, यह कुछ प्रकार पर निर्भर नहीं है, यह सिर्फ स्थिर है।
3) अगर मैं एक string
रूप GreaterThan
है, वहाँ एक रास्ता Expression
में एक ही नाम के साथ विधि को यह स्ट्रिंग से प्राप्त करने के लिए है? सामान्य रूप से, यदि तुलना विधि का नाम string
के रूप में दिया गया है, तो मैं स्ट्रिंग से वास्तव में विधि को उसी नाम से Expression
कक्षा पर कॉल करने के लिए कैसे जा सकता हूं?
यदि यह महत्वपूर्ण है, तो इसे LINQ से Entities के साथ काम करना होगा।
आप ExpressionVisitor वर्ग का उपयोग करके अभिव्यक्ति पेड़ बदल सकते हैं। – Steven