दिलचस्प पोस्ट
त्रुटि पर स्वतः अजगर डीबगर प्रारंभ करना साधारण पोस्ट-रीडायरेक्ट-कोड उदाहरण प्राप्त करें मैं पायथन में रॉ सॉकेट का उपयोग कैसे करूं? क्यों दस्तावेज़.body.offsetHyight + document.body.bottomMargin दस्तावेज़ के समान नहीं है document.documentElement.offsetHight आईफोन ऐप पृष्ठभूमि संगीत जारी रखने के लिए अनुमति देते हैं MySQL / नियमित एक्सप्रेशन रेप्डेर में शब्द कैसे गिनें? सूचियों की सूची अप्रत्याशित रूप से प्रतिबिंबित हुई है उपयोगकर्ता को पासवर्ड बचाने के लिए कैसे संकेत मिलता है? एंड्रॉइड कैसे सामग्री डिजाइन डॉक्स से नीचे की शीट को लागू करने के लिए एएसपी.नेट एमवीसी फॉर्म प्रमाणीकरण + प्राधिकृत विशेषता + सरल भूमिकाएं Winforms में निष्क्रिय उपयोगकर्ताओं का पता लगा रहा है पृष्ठ स्क्रॉल किए जाने के बाद jQuery के ड्रैगएबल गलत जगह में सहायक दिखाता है फ्लास्क मार्ग में मनमाना मार्ग पर कब्जा PHP सरणी के प्रत्येक आइटम के लिए एक उपसर्ग जोड़ें एन्क्रिप्ट / डिक्रिप्ट फाइलों के लिए ओपनएसएसएल का उपयोग कैसे करें?

सशर्त त्रिगुट ऑपरेटर का प्रयोग करके लैम्ब्डा के बीच एक फोंक <> सशर्त रूप से मैं कैसे आवंटित कर सकता हूं?

आम तौर पर, सशर्त ऑपरेटर का उपयोग करते समय, यहाँ वाक्यविन्यास है:

int x = 6; int y = x == 6 ? 5 : 9; 

कुछ फैंसी नहीं, बहुत सीधे आगे।

अब, इसका उपयोग करने का प्रयास करते हैं जब एक लम्ब्डा को फ़नक प्रकार से निर्दिष्ट करते हैं। मुझे समझाने दो:

 Func<Order, bool> predicate = id == null ? p => p.EmployeeID == null : p => p.EmployeeID == id; 

वही वाक्यविन्यास है, और काम करना चाहिए ? सही? किसी कारण से ऐसा नहीं है संकलक इस गुप्त संदेश को देता है:

त्रुटि 1 सशर्त अभिव्यक्ति का प्रकार निर्धारित नहीं किया जा सकता क्योंकि 'लैम्ब्डा अभिव्यक्ति' और 'लैम्ब्डा अभिव्यक्ति' के बीच कोई अंतर्निहित रूपांतरण नहीं है

तब मैंने आगे बढ़कर वाक्यविन्यास बदल दिया और इस तरीके से काम किया:

 Func<Order, bool> predicate = id == null ? predicate = p => p.EmployeeID == null : predicate = p => p.EmployeeID == id; 

मैं बस इतना ही उत्सुक हूँ कि यह पहला रास्ता क्यों नहीं चला?

(साइड नोट: मुझे इस कोड की जरूरत नहीं है, क्योंकि मुझे पता चला है कि जब आप शून्य के साथ एक इंट मान की तुलना करते हैं, तो आप ऑब्जेक्ट का उपयोग करते हैं।

Solutions Collecting From Web of "सशर्त त्रिगुट ऑपरेटर का प्रयोग करके लैम्ब्डा के बीच एक फोंक <> सशर्त रूप से मैं कैसे आवंटित कर सकता हूं?"

आप लैम्ब्डा अभिव्यक्ति को किसी विशेष लक्ष्य प्रतिनिधि के रूप में परिवर्तित कर सकते हैं, लेकिन सशर्त अभिव्यक्ति के प्रकार को निर्धारित करने के लिए, संकलक को प्रत्येक दूसरे और तीसरे ऑपरेंड के प्रकार को जानने की आवश्यकता है। जब वे दोनों ही "लैम्ब्डा अभिव्यक्ति" हैं, तो एक से दूसरे तक कोई रूपांतरण नहीं होता है, इसलिए संकलक कुछ उपयोगी नहीं कर सकता है।

मैं एक असाइनमेंट का उपयोग करने का सुझाव नहीं देता, हालांकि – एक कलाकार अधिक स्पष्ट है:

 Func<Order, bool> predicate = id == null ? (Func<Order, bool>) (p => p.EmployeeID == null) : p => p.EmployeeID == id; 

ध्यान दें कि आपको इसे केवल एक ऑपरेंड के लिए प्रदान करने की आवश्यकता है, इसलिए संकलक दूसरे लैम्ब्डा अभिव्यक्ति से रूपांतरण कर सकता है।

सी # संकलक निर्मित लैम्ब्डा अभिव्यक्ति के प्रकार का अनुमान नहीं लगा सकता क्योंकि यह पहले त्रिभुज की प्रक्रिया करता है और फिर असाइनमेंट होता है। आप यह भी कर सकते हैं:

 Func<Order, bool> predicate = id == null ? new Func<Order,bool>(p => p.EmployeeID == null) : new Func<Order,bool>(p => p.EmployeeID == id); 

लेकिन यह सिर्फ बेकार है, आप भी कोशिश कर सकते हैं

 Func<Order, bool> predicate = id == null ? (Order p) => p.EmployeeID == null : (Order p) => p.EmployeeID == id;