मेरे पास निम्न श्रेणी ऑब्जेक्ट हैं:
सार्वजनिक श्रेणी की अवकाश श्रेणी {सार्वजनिक इन्ट आईडी} ; सेट; } सार्वजनिक स्ट्रिंग पाठ {get; सेट; } सार्वजनिक IList & lt; VacancySubCategory & gt; उपश्रेणियाँ {प्राप्त करें; सेट; }} पब्लिक क्लास रिकिक्शनशूबेश्रेण {सार्वजनिक इन्ट आईडी {get; सेट; } सार्वजनिक स्ट्रिंग पाठ {get; सेट; } सार्वजनिक रिक्ति श्रेणी श्रेणी {प्राप्त करें; सेट; } सार्वजनिक आईएलआईआईटी & लेफ्टिनेंट; रिक्ति & gt; रिक्तियों (प्राप्त); सेट; }} पब्लिक क्लास रिक्ति: आईबीनेसऑब्जेक्ट {सार्वजनिक इन्ट आईडी (प्राप्त करें; सेट; } सार्वजनिक स्ट्रिंग शीर्षक {get; सेट; } सार्वजनिक रिक्तिविश्री उपश्रेणी {प्राप्त करें; सेट; } सार्वजनिक स्ट्रिंग बॉडी {प्राप्त; सेट; } सार्वजनिक VacancyWorkType WorkType {get; सेट; } सार्वजनिक स्ट्रिंग वेतन {प्राप्त; सेट; } सार्वजनिक तिथि समय? AppsClosingDate {प्राप्त करें; सेट; } सार्वजनिक बूल सक्रिय {get; सेट; }}
... तो एक परीक्षण रिपॉजिटरी में ऐसा परीक्षण डेटा बनाने जैसे:
<पूर्व> निजी IList & lt; VacancyCategory & gt; GetVacancyCategoriesWithAllChildCollections () {IList & lt; VacancyCategory & gt; रिक्ति श्रेणियां = नई सूची & lt; VacancyCategory & gt; (); इंट cCounter = 0; Int scCounter = 0; इंट vCounter = 0; (इंट I = 1; i & lt; = 3; i ++) के लिए (VacancyCategory vc = new VacancyCategory (); Vc.ID = ++ cCounter; Vc.text = "रिक्तता श्रेणी" + i.ToString (); के लिए (इंट जे = 1; जम्मू और एलटी; = 3; जे ++) {रिकैसिश्यूब श्रेणी vsc = नई रिक्तिविशेषता (); Vsc.ID = ++ scCounter; Vsc.Text = "VacancySubCategory" + scCounter.ToString (); Vsc.Category = vc; के लिए (int k = 1; k & lt; = 2; k ++) {रिक्ति v = नई रिक्ति (); V.ID = ++ vCounter; V.Title = "रिक्ति" + vCounter.ToString (); V.Body = "VacancyBody" + vCounter.ToString (); V। सक्रिय = vCounter & gt; = 16? सच्चा झूठा; V.WorkType = this._workTypes.Single (wt = & gt; wt.ID == k); V.Salary = vCounter & lt; = 7? "एसआर" + (vCounter * 1000) .ओस्ट्रिंग (): ""; V.AppsClosingDate = (vCounter & gt; = 3 और vCounter & lt; = 13)? (नया दिनांक समय (200 9, 3, vCounter)): (दिनांक समय?) नल; V.SubCategory = vsc; अगर (vs.Vacancies == शून्य) vs.Vacancies = नई सूची & amp; एलटी; रिक्ति & gt; (); vsc.Vacancies.Add (v); } अगर (vc.SubCategories == नल) vc.SubCategories = नई सूची & amp;;; VacancySubCategory & gt; (); vc.SubCategories.Add (VSC); } रिक्ति श्रेणियां। जोड़ें (वीसी); } वापसी रिक्ति श्रेणियों; }
.. तो अब मेरे पास कुछ अच्छा परीक्षण डेटा है ऑब्जेक्ट ट्री / चीइन्ड ऑब्जेक्ट्स मेरे लिए महत्वपूर्ण हैं।
इसलिए जब मैं वांछित होता है तो मैं इस ऑब्जेक्ट ऑब्जेक्ट संग्रह को इस पेड़ से वापस करना चाहता हूं। उदाहरण के लिए, यदि मैं पूरे पेड़ को चाहूं, तो मैं सभी चीजों के साथ ही रिकेंसी श्रेणी की सूची वापस कर सकता हूं- महान। लेकिन अब मैं केवल रिकैंसिब कैरेगरीज आइटम (सभी 9 में से) को वापस करना चाहता हूं। यह परीक्षण रिपॉजिटरी में मेरी सार्वजनिक विधि होगी:
सार्वजनिक IQueryable & lt; VacancySubCategory & gt; GetVacancySubCategories () {नया NotImplementedException ("लिखना जन कोड"); }
.. अपवाद के बिना स्पष्ट रूप से। मेरे पास एक सदस्य क्षेत्र है जिसे _categories कहते हैं जिसमें गेटविचेंसीवर्ड्सविथ सभी चाइल्डकॉल्लेक्शन विधि से परिणाम होते हैं। इसलिए मैं सामान की कोशिश कर रहा हूं
this._categories.Select (......
.. लेकिन मैं कठबोली वापस लौटना चाहता हूँ रिक्तिशिप श्रेणी ऑब्जेक्ट्स की सूची। मुझे हमेशा जड़ संग्रह का चयन करना पड़ता है (अर्थात परिणामस्वरूप रिक्ति-श्रेणी ऑब्जेक्ट्स का परिणाम)। मैं क्या कर रहा हूँ? मुझे यकीन है कि इसकी सरल ... लेकिन यह मुझे नट्स चला रहा है!
संपादित करें
थ्रेंक्स मैट।
आपके सुझाव ने मुझे इसके लिए नेतृत्व किया:
सार्वजनिक IQueryable & lt; VacancySubCategory & gt; GetVacancySubCategories ( ) {Return.categories.selectMany (c = & gt; c.SubCategories) .AsQueryable & lt; VacancySubCategory & gt; ();}
.. जो महान काम करता है आप एक विजेता हो
कोशिश करें:
<पूर्व> इस। C.SubCategories);
Comments
Post a Comment