मैंने किसी चीज़ allStudents = Dictionary<ClassRoom, List<Student>>()
सी # LINQ
Linq में मैं सभी छात्रों को, जो पुरुष हैं की एक सूची कैसे प्राप्त होता है? (छात्र। लिंग == "एम") सभी कक्षाओं से?
इयान
मैंने किसी चीज़ allStudents = Dictionary<ClassRoom, List<Student>>()
सी # LINQ
Linq में मैं सभी छात्रों को, जो पुरुष हैं की एक सूची कैसे प्राप्त होता है? (छात्र। लिंग == "एम") सभी कक्षाओं से?
इयान
निम्नलिखित
var maleStudents = allStudents
.SelectMany(x => x.Values)
.Where(x => x.Gender=="m");
यह करने के लिए चाल SelectMany
ऑपरेशन है की कोशिश करो। इसका List<Student>
का संग्रह Student
के एक संग्रह में फ़्लैटन करने का प्रभाव है। परिणामी सूची वही है जैसे आप प्रत्येक सूची को सामने से ऊपर लाएंगे।
यह बीटीडब्ल्यू, – vittore
से नीचे सुझाए गए टॉमस की तुलना में तेज़ी से काम करेगा, सी # कंपाइलर क्वेरी को थोड़ा और जटिल कोड में अनुवाद करता है, लेकिन मुझे नहीं लगता कि अंतर किसी भी उचित परिदृश्य में मामला। समाधान को चुनना अधिक महत्वपूर्ण है जो अधिक पठनीय दिखता है (जो व्यक्तिगत राय है)। –
आप नेस्टेड from
खंड का उपयोग कर सकते हैं। पहले from
अपने छात्रों (शब्दकोश से एक आइटम) के साथ सभी वर्गों का चयन करता है, जिसे KeyValuePair<ClassRoom, List<Student>>
के रूप में दर्शाया गया है। तो फिर तुम Value
संपत्ति का उपयोग कर क्लास से सभी छात्रों का चयन कर उन्हें फ़िल्टर कर सकते हैं: कवर के तहत
var q = from cls in allStudents
from s in cls.Value
where s.Gender == "M" select s;
, नेस्टेड from
खंड SelectMany
विधि कॉल करने के लिए अनुवाद किया है।
@phsr इससे कोई फर्क पड़ता है? – baron
स्टैक ओवरफ्लो पर बहुत से होमवर्क प्रश्न हैं। बस उचित टैग करें। (किसी भी मामले में, मुझे नहीं लगता कि यह एक है।) – harpo
मैंने उन वस्तुओं का उपयोग किया क्योंकि वे सार्वभौमिक रूप से समझा जाएगा। वास्तविक व्यापार वस्तुओं को सामान्य उपयोगकर्ताओं के लिए नहीं जाना जाएगा। मैंने होमवर्क करने के लिए कई साल पहले भी स्नातक की उपाधि प्राप्त की थी;) –