मेरे पास question using these same examples है - यह प्रश्न एक अलग मुद्दे पर केंद्रित है। को देखते हुए निम्नलिखित वर्गों:नेस्टेड क्लास सूची <T> से एक फ़्लैटेड सूची कैसे प्राप्त करें?
[XmlRoot]
public class Family {
[XmlElement]
public List<Person> Person;
}
public class Person {
[XmlAttribute("member")]
public MemberType Member { get; set; }
[XmlAttribute("id")]
public int Id { get; set; }
[XmlElement]
public string Surname { get; set; }
[XmlElement]
public string Forename { get; set; }
[XmlElement("Person")]
public List<Person> People;
}
public enum MemberType {
Father,
Mother,
Son,
Daughter
}
तो Family
एक विधि इस तरह के रूप में परिभाषित किया गया है:
public IEnumerable<Person> Find (Func<Person, bool> predicate) {
// how do I get SelectMany to flatten the list?
foreach (var p in family.Person.SelectMany(p => p)) {
if(predicate(p)) {
yield return p;
}
}
}
मैं Person
का एक चपटा सूची पर विधेय निष्पादित करने में सक्षम होने की जरूरत है। ऊपर दिए गए उदाहरण में SelectMany
सूची को फ़्लैटन नहीं कर रहा है जैसा कि मैंने आशा की थी। उपर्युक्त वास्तव में संकलित नहीं होगा क्योंकि अनुमानित प्रकार निर्धारित नहीं किया जा सकता है।
मैं परिवार कैसे प्राप्त कर सकता हूं। व्यक्ति संग्रह व्यक्ति की एक चतुर सूची बनने के लिए?
तुम कोशिश 'पी => p.People' किया? – jvstech
यदि आपके पास अपनी डेटा संरचना में लूप हैं तो आप यह समाधान कर सकते हैं: http://stackoverflow.com/questions/141467/recursive-list-flattening/24747394#answer-24747394 – Aidin