मैं सी # के कार्यात्मक पक्ष में नया हूं, क्षमा करें यदि प्रश्न लंगड़ा है।अनाम विधि के माध्यम से अनाम प्रकार की संपत्ति असाइन करना
को देखते हुए निम्नलिखित गलत कोड:
var jobSummaries = from job in jobs
where ...
select new
{
ID = job.ID,
Description = job.Description,
FileName = (job) => {
// primitive logic not
// worth to become a named method
try { return job.Files[0].LocalName); }
catch { return null as string; }
}
};
इस कोड को निम्नलिखित उचित संकलक त्रुटि पैदा करता है:
cannot assign lambda expression to anonymous type property
कोड ऊपर फ़ाइल का नाम संपत्ति के लिए प्रतिनिधि तय करेगा। लेकिन यह मेरा लक्ष्य नहीं है। मैं चाहता हूं कि कोड इस तरह काम करे लेकिन विधि का नाम दिए बिना:
var jobSummaries = from job in jobs
where ...
select new
{
ID = job.ID,
Description = job.Description,
FileName = this.ExtractFileName(job)
};
...
private string ExtractFileName(Job job)
{
try { return Path.GetFileName(job.Files[0].LocalName); }
catch { return null as string; }
}
कोई सुझाव?
के अंदर अपना छोटा तर्क कर सकते हैं मैंने अभी कोशिश की है। मैं 'चलो' के साथ स्थानीय चर के रूप में लैम्ब्डा अभिव्यक्ति सेट नहीं कर सकता। मैंने नमूना कोड अपडेट किया। मेरे पास एक कोशिश/पकड़ है जो प्रत्यक्ष कंप्यूटिंग को मुश्किल बनाता है। – GarbageGuy
नहीं, आप 'फ़ाइल नाम' में लैम्ब्डा अभिव्यक्ति निर्दिष्ट नहीं कर सकते हैं। बस कोड लिखें: 'fileName = path.Combine (job.Folder, job.File)' या जो भी तर्क आपको चाहिए ... –
अज्ञात डाउनवोट क्यों? –