c# - Expression... LINQ to Entities only supports casting Entity Data Model primitive typesâ -
मेरे पास यह सामान्य विधि है:
सार्वजनिक IQueryable & lt; TEntity & gt; PaginateAndOrderByDesc & LT; TEntity & gt; (पूर्णांक pageIndex, पूर्णांक pageSize, अभिव्यक्ति के & lt; समारोह के & lt; TEntity, वस्तु & gt; & gt; orderByDescending) जहां TEntity: वर्ग, IContextEntity {int numberOfRecordsToSkip = (pageIndex - 1) * pageSize; वापसी संदर्भ .सेट & lt; टेन्टीटी & gt; ()। आदेश क्रमबद्धण (आदेशब्राउडसींडिंग)। स्किप (संख्याऑफ़रेक्शंसटोस्किप)। ले जाएं (पृष्ठ साइज़); } जब मैं इसका उपयोग करता हूं:
सूची & lt; व्यक्ति & gt; लोग = रिपॉजिटरी.पगनेट एंडऑर्डर बाय डीस्क & lt; व्यक्ति & gt; (1, 30, x = & gt; x.RegistrDate) .ओलिस्ट (); मैं कोई त्रुटि मिलती है: "।। संस्थाओं केवल कास्टिंग ईडीएम आदिम या गणन प्रकार का समर्थन करता करने के लिए 'System.Object' LINQ टाइप करने के लिए प्रकार 'System.DateTime' कास्ट करने में असमर्थ"
मैं कैसे कर सकता हूँ कि orderByDescending अभिव्यक्ति के साथ सामान्य समारोह काम करता है?
एक सामान्य तर्क जोड़े जिस प्रकार से आप ऑर्डर कर रहे हैं उसका प्रतिनिधित्व करने के लिए:
सार्वजनिक IQueryable & lt; TEntity & gt; PaginateAndOrderByDesc & LT; TEntity, TKey & gt; (पूर्णांक pageIndex, पूर्णांक pageSize, अभिव्यक्ति के & lt; समारोह के & lt; TEntity, TKey & gt; & gt; sortSelector) जहां TEntity: वर्ग, IContextEntity {int numberOfRecordsToSkip = (pageIndex - 1) * pageSize; वापसी संदर्भ .सेट & lt; TEntity & gt; () .ऑर्डरबाइडेस्किंग (सॉर्ट सिलेक्टर)। स्किप (संख्याऑफ़रेक्शंसटोस्किप)। ले जाएं (पृष्ठ साइज़); } यह पूछने के बाद कि मैं इस क्वेरी में orderby विधि को शामिल नहीं करने का सुझाव दूंगा यह "क्वेरी डेटा" और "एक निश्चित पृष्ठ प्राप्त करें" कार्यों को संयोजित करने के लिए आपकी क्वेरी की पठनीयता को कम कर देता है। उन्हें अलग रखें "ऑर्डर ऑर्डर" ऑपरेशन बस ठीक है जैसा कि यह है; आपको वास्तव में केवल "एक निश्चित पृष्ठ प्राप्त करें" क्वेरी बनाने की आवश्यकता है: सार्वजनिक स्थिर IQueryable & lt; TENTity & gt; GetPage & LT; TEntity & gt; (इस IOrderedQueryable & LT; TEntity & gt; क्वेरी, पूर्णांक pageIndex, पूर्णांक pageSize) {int numberOfRecordsToSkip = (pageIndex - 1) * pageSize; वापसी क्वेरी। स्किप (संख्याऑफ़रेक्शंसटोस्किप)। ले जाएं (पृष्ठ साइज़); } आपको अपने प्रश्नों को लिखने के लिए अधिक शक्ति देने के अतिरिक्त, यह और अधिक महत्वपूर्ण रूप से अधिक पठनीय प्रश्नों के परिणामस्वरूप जो हो रहा है, उन तरीकों पर आधारित बहुत स्पष्ट है
Comments
Post a Comment