c# - Nested LINQ returning a this method cannot be translated into a store expression exception -


निम्न LINQ:

  retval = (संस्थाओं में jm से। जेबमास्टर्स जहां jm। UserId == userId और amp; amp; jm.IsRemote == झूठ नई नौकरी की जांच करें {JobMasterId = jm.JobMasterId, ExternalTaskId = jm.ExternalTaskId, JobDetails = (संस्थाओं में जेडी से। जेब विवरण में जहां jd.JobMasterId == jm.JobMasterId नया चयन करें JobDetailDto {ScreenFieldId = jd.ScreenFieldId, FieldValue = jd.FieldValue}) .ओलिस्ट ()}) .ओलिस्ट ();  

मुझे यह त्रुटि दे रहा है:

LINQ को इकाईयों को 'सिस्टम' को पहचान नहीं है। Colllections.Generic.List1 1 [KernWcfTest.DataTransferObjects। JobDetailDto] ToList [JobDetailDto] (System.Collections.Generic.IEnumerable`1 [KernWcfTest.DataTransferObjects.JobDetailDto]) विधि, और इस पद्धति का एक स्टोर अभिव्यक्ति में अनुवाद नहीं किया जा सकता।

यहां दो डीटीओ कक्षाएं हैं:

  [डेटाकांट्रक्ट] सार्वजनिक वर्ग की जॉब डिक्टेटडाओ {[डेटामेम्बर] सार्वजनिक एट स्क्रीनफिल्ड आईडी {get; सेट; } [डेटामेम्बर] सार्वजनिक स्ट्रिंग फ़ील्ड मूल्य {प्राप्त करें; सेट; }} [डेटाकॉन्ट्रक्ट] [ज्ञात टाइप (टाइप ऑफ (जॉब डिक्टेट्ड))] पब्लिक क्लास जॉबडटो {[डाटामेम्बर] पब्लिक इंटर्न जॉब मैस्टरआईड {प्राप्त; सेट; } [डेटामेम्बर] सार्वजनिक स्ट्रिंग ExternalTaskId {get; सेट; } [डेटामेम्बर] पब्लिक लिस्ट & जॉब डिक्टेट्ड & gt; नौकरी जानकारी {प्राप्त करें; सेट; }}  

समस्या उप-चयन और JobDetails सूची है मैंने ज्ञात टाइप को जोड़ने की कोशिश की लेकिन यह काम नहीं कर रहा था

यह सब ठीक काम करता है LINQ पैड में।

कोई विचार?

चीयर्स

स्टीव

< P>

आंतरिक क्वेरी पर ToList को कॉल न करें (जॉब विवरण के लिए एक) त्रुटि "यह है। आप जिस सूची के बारे में बात करते हैं - इसका टी-एसक्यूएल में अनुवाद नहीं किया जा सकता!"

यह काम करना चाहिए:

  retval = (से संस्थाओं में jm.JobMasters जहां jm.UserId == userId & amp; amp; amp; amp; और jm.IsRemote == झूठे नई JobDto का चयन करें {JobMasterId = jm.JobMasterId, ExternalTaskId = jm.ExternalTaskId, जॉब से जानकारी = jd में संस्थाओं.जोबिया विवरण जहां jd.JobMasterId == jm.JobMasterId नई JobDetailDto का चयन करें {ScreenFieldId = jd.ScreenFieldId, FieldValue = jd.FieldValue})}) .ToList ();  

ध्यान दें कि आप क्वेरी के अंत में ToList को कॉल कर सकते हैं, क्योंकि उस भाग को टी-एसक्यूएल में अनुवादित करने की आवश्यकता नहीं है।


Comments