2012-01-07 14 views
10

में एकाधिक कथन कैसे जोड़ सकता हूं मैं इस LINQ फ़ील्ड में नया हूं और एक चीज करने की कोशिश कर रहा हूं।मैं लैम्बडा अभिव्यक्ति

मेरे पास एक एक्शन प्रतिनिधि (नीचे लिखा गया है) जिसे मैं लैम्ब्डा अभिव्यक्ति में परिवर्तित करना चाहता हूं।

 Action<string> custom = delegate(string name) 
      { 
       lstCutomers.Add(new Customer(name, coutries[cnt])); 
       name = name + " Object Created"; 
      }; 

इसके लिए लैम्ब्डा अभिव्यक्ति क्या होगी। मैं सिर्फ यह जानना चाहता हूं कि क्या मैं लैम्ब्डा में कई कथन लिख सकता हूं यदि नहीं तो क्यों?

अग्रिम धन्यवाद।

+0

हाँ आप एक ही बयान या बयान के एक ब्लॉक में लिख सकते हैं – Peeyush

+0

की जाँच करें:: http://stackoverflow.com/questions/299703/delegate-keyword-vs- लेकिन आप एक बयान लैम्ब्डा बना सकते हैं प्रतिनिधिमंडल वीएस लैम्ब्डा नोटेशन के बारे में एक निर्विवाद चर्चा के लिए लैम्ब्डा-नोटेशन। –

+0

आपको एहसास है कि 'नाम' पर वापस मूल्य निर्दिष्ट करने का कोई प्रभाव नहीं होगा, है ना? तो आपका दूसरा कथन अप्रासंगिक है, और आप एक गैर-कथन लैम्ब्डा का उपयोग कर सकते हैं। या तो आपने एक बुरा उदाहरण दिया है, या आपको शायद आपके कोड में एक बग मिला है ... –

उत्तर

18

आप लैम्ब्डा अभिव्यक्ति नहीं बना सकते हैं, क्योंकि आप कुछ भी वापस नहीं कर रहे हैं।

Action<string> custom = (name) => 
     { 
      lstCutomers.Add(new Customer(name, coutries[cnt])); 
      name = name + " Object Created"; 
     }; 
+0

जो अनाम विधि होगी। यह एक्शन कस्टमलैम्ब्डा = (नाम) => lstCutomers.Add (नया ग्राहक (नाम, coutries [cnt]); नाम = नाम + "ऑब्जेक्ट बनाया गया";); जो संकलन भी नहीं कर रहा है। –

+0

तब सुनिश्चित नहीं है, क्योंकि 'अभिव्यक्ति' हमेशा एक मूल्य के साथ समाप्त होता है। मैंने सोचा कि '=>' ने इसे लैम्ब्डा अभिव्यक्ति बनाया है (जिसे कस्टम प्रकार के कारण अज्ञात विधि में परिवर्तित किया जाता है)। –

+1

@ डीजे: [एमएसडीएन] से (http://msdn.microsoft.com/en-us/library/bb397687.aspx) 'एक लैम्ब्डा अभिव्यक्ति एक अज्ञात फ़ंक्शन है जिसमें अभिव्यक्तियां और कथन भी शामिल हो सकते हैं, अनुभाग देखें वक्तव्य Lambdas। मेरा जवाब अपडेट किया है। –

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