वहाँ रहने दो:कन्वर्ट अभिव्यक्ति पेड़
Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;
अब मैं मैं संदेश का प्रकार बदलने की आवश्यकता _db.Messages.where(exp1);
समस्या का exp1 पास करनी होगी मैं केवल exp2 है जाता है, सभी गुण एक ही कर रहे हैं!
अब मैं ऐसा करते हैं: इस के साथ
var par = Expression.Parameter(typeof(Message));
var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);
समस्या इनपुट पैरामीटर बदल जाती है हाँ! लेकिन लैम्ब्डा "x.mesID" के शरीर के अंदर एक्स पुराने प्रकार का है।
शरीर में सभी पैरामीटर प्रकार को बदलने या इनपुट पैरामीटर को बदलने के किसी भी तरीके से शरीर को भी प्रतिबिंबित करता है?
मुझे लगता है कि यह हमेशा एक बड़ी समस्या है जो मेरे पास LINQ के साथ है, क्योंकि परतों के बीच मैं जेनरेट कक्षाओं को पार नहीं कर सकता, क्योंकि यह परतों को जोड़ देगा, इसलिए मुझे हल्के वजन वर्ग बनाना होगा, अब मैं एक विधि का उपयोग कैसे करूं _db.Messages.where() की तरह; busiess परत से !! !! जबकि busniess परत संदेश प्रकार के बारे में कुछ भी नहीं जानता है, यह केवल संदेश डीटीओ पता है।
(जोड़ा उदाहरण) –