2008-11-10 3 views
5

लिनक की दुनिया में अभी भी नई है, और मुझे माता-पिता की एक सूची को फ्लैट करने में कुछ मदद की ज़रूरत है, जिसमें माता-पिता की एक सूची में बच्चों को शामिल किया गया है।लिंक्स पूछताछ माता-पिता की एक विस्तृत सूची

बस इस तरह

:

class Program 
{ 
    static void Main() 
    { 
     List<Parent> parents = new List<Parent>(); 

     parents.Add(new Parent { Name = "Parent1", Children = new List<Child> { new Child { Name = "Child1" }, new Child { Name = "Child2" } } }); 
     parents.Add(new Parent { Name = "Parent2", Children = new List<Child> { new Child { Name = "Child3" }, new Child { Name = "Child4" } } }); 

     // linq query to return List<ParentChild> parentChildList; 
     // ParentName = Parent1, ChildName = Child1 
     // ParentName = Parent1, ChildName = Child2 
     // ParentName = Parent2, ChildName = Child3 
     // ParentName = Parent2, ChildName = Child4 
    } 

    internal class ParentChild 
    { 
     public string ParentName { get; set; } 
     public string ChildName { get; set; } 
    } 

    internal class Parent 
    { 
     public string Name { get; set; } 
     public List<Child> Children { get; set; } 
    } 

    internal class Child 
    { 
     public string Name { get; set; } 
    } 
} 

बहुत धन्यवाद, क्रिस

उत्तर

13
from parent in parents 
from child in parent.Children 
select new ParentChild() { ParentName = parent.Name, ChildName = child.Name }; 
+0

मैं विंडोज़ एप्लिकेशन में डेटाग्रिड व्यू को बाध्य करने के बारे में कैसे जाउंगा, मैंने grdTerminals.DataBindings.Add ("टर्मिनलनाम", डेटासोर्स, "टर्मिनल") की कोशिश की है; लेकिन यह एक खाली स्ट्रिंग देता है –

3

यह यह तुम्हारे लिए क्या करना चाहिए:

var k = from p in parents 
     from c in p.Children 
     select new {Name = p.Name, Child = c.Name }; 

संपादित करें: ओह एक नया ParentChild वापस जाने के लिए भूल गया वस्तु। लेकिन केंट ने मुझे मार दिया;)