तो, मैं वे लोग जिनके आईडी आईडी की एक स्थानीय रूप से बनाया संग्रह के भीतर निहित है का एक संग्रह (IQueryable)LinqToSQls के आसपास काम कर रहे "स्थानीय संग्रह के साथ प्रश्नों समर्थित नहीं हैं" अपवाद
वापस जाने के लिए जब मैं "निर्दिष्ट कोशिश कर रहा हूँ स्थानीय रूप से निर्मित संग्रह ", मेरा मतलब है कि आईडी संग्रह एक LinqToSQL क्वेरी से नहीं आया है और प्रोग्रामेटिक रूप से बनाया गया है (उपयोगकर्ता इनपुट के आधार पर)। मेरे क्वेरी इस तरह दिखता है:
var qry = from p in DBContext.People
where Ids.Contains(p.ID)
select p.ID;
यह निम्नलिखित अपवाद का कारण बनता है ...
"स्थानीय संग्रह के साथ प्रश्नों समर्थित नहीं हैं"
मैं एक आईडी के साथ सभी लोगों को कैसे मिल सकता है कि मेरे स्थानीय रूप से बनाए गए आईडी संग्रह में निहित है?
क्या यह LinqToSql का उपयोग करना संभव है?
मुझे लगता है कि आपकी समस्या का समाधान इस उत्तर से अधिक प्रचलित है। मैं एक ही निर्माण (एक WHQueryE खंड में एक IQueryable पर एक विधि शामिल है) सफलतापूर्वक उपयोग कर रहा हूं, और LINQ से SQL SQL SQL क्वेरी में WHERE EXISTS क्लॉज में इसका अनुवाद करता है। ऐसा लगता है कि कुछ स्थितियों में काम नहीं करता है, न कि दूसरों को, इसलिए आपको पोस्ट करना चाहिए कि आप अपने आईडी IQueryable कैसे प्राप्त करते हैं, क्योंकि इससे इस मुद्दे पर कुछ प्रकाश डाला जा सकता है। –
@jmbledsoe अगर मेरा उत्तर पर्याप्त स्पष्ट नहीं था: एल 2 एस एक स्थानीय आईनेमरेबल (एक स्थगित IQueryable नहीं) की अपेक्षा करता है जो संख्यात्मक को पास करता है। यदि आप इसे एक स्थानीय क्वेरी पास करते हैं, जिसका अनुवाद SQL क्वेरी में नहीं किया जा सकता है। यदि आप इसे एक सूची/सरणी/आदि पास करते हैं तो इसका अनुवाद एसक्यूएल में किया जा सकता है "जहां ... में (x, y, ..., n)" खंड। – KristoferA
मुझे लगता है कि मैं देख रहा हूं कि आप क्या कह रहे हैं: - एक सूची/ऐरे/आदि पास करना। ठीक है बी/सी यह एक जेनरेट करेगा ... खंड में। - एक स्थगित IQueryable पास करना ठीक है b/c यह वर्तमान स्थगित क्वेरी के साथ एकीकृत करेगा। - एक स्थानीय आईनेमरेबल पास करना ठीक नहीं है, लेकिन आप बस कर सकते हैं। कृपया() इसे और यह ठीक रहेगा। –