एक लिंक क्वेरी में अभिव्यक्ति में उत्तीर्ण होना सिंटैक्स के आधार पर अलग-अलग व्यवहार करता है, और मुझे आश्चर्य है कि ऐसा क्यों है।लिंक जहां कीवर्ड बनाम। एक्सटेंशन और अभिव्यक्ति पैरामीटर
चलो कहते हैं कि मैं इस बहुत सामान्य समारोह करते हैं
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
निम्नलिखित कार्यान्वयन काम करता है उम्मीद
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
{
return (from c in _ctx.Companies.Where(whereClause) select c);
}
के रूप में लेकिन यह अगले कार्यान्वयन (प्रतिनिधि 'System.Func' संकलन नहीं करता नहीं ले 1 तर्क)
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
{
return (from c in _ctx.Companies where whereClause select c);
}
जाहिर है मैं केवल पहले सिंटैक्स का उपयोग कर सकता हूं, लेकिन मैं बस सोच रहा था कि संकलक कहां से कीवर्ड के समान व्यवहार का व्यवहार नहीं करता है?
धन्यवाद, थॉमस
यदि आप Func अभिव्यक्ति > के बजाय तर्क के रूप में स्वीकार करना चाहते थे, तो आप पैरामीटर प्रकार के रूप में का उपयोग कर सकते थे। –
हाँ यह केवल 'कहां' मतभेदों पर ध्यान केंद्रित करने के लिए एक सरलीकृत उदाहरण है। अभिव्यक्ति> का उपयोग करने का कारण यह है कि मैं चाहता हूं कि डेटा बेस पर कहां निष्पादित किया जाए, स्मृति में नहीं। –