2009-04-23 15 views
9

मैं मुसीबत एक "बड़ा सरणी" में एकाधिक सरणियों के योग, मुझे लगता है कि इस Linq में संभव हो जाना चाहिए, लेकिन मैं मेरे सिर नहीं मिल सकता है चारों ओर यह :(एक सरणी (LINQ) में सकल एकाधिक सरणियों

आ रही हैं

public class Temp 
{ 
    public List<DummyObjectReceiver> { get; set; } 

    public DummyObject[] GetAllDummyObjects() 
    { 
    //here's where I'm struggling (in linq) - no problem doing it using foreach'es... ;) 
    } 
} 

आशा है कि यह कुछ हद तक स्पष्ट है कि मैं क्याप्राप्त करने के लिए कोशिश कर रहा हूँ है:

कुछ विधि है जो कुछ dummyObjects की एक सरणी

public class DummyObjectReceiver 
{ 
    public DummyObject[] GetDummyObjects { -snip- } 
} 

अब रिटर्न कहीं मैं इस पर विचार(अतिरिक्त के रूप में मैं एक पूर्णांक मूल्य DummyObject है ... द्वारा इस सरणी ऑर्डर करने के लिए चाहते हैं - लेकिन orderby कोई समस्या नहीं होनी चाहिए, ... मुझे आशा है कि;)

+2

मुझे लगता है कि मैं सिर्फ यह बहुत ही सवाल का जवाब दे: http://stackoverflow.com/questions/780867/ –

+0

हाँ, यह एक ही सिद्धांत है, लेकिन यह एक जोड़ा गया है ऑब्जेक्ट्स लौटने वाली विधि के साथ ऑब्जेक्ट्स की एक सूची रखने का मोड़। – Guffa

उत्तर

15

आप की सूची समतल SelectMany विधि का उपयोग एक सरणी में वस्तुओं को वापस सरणी।

public class DummyObject { 
    public string Name; 
    public int Value; 
} 

public class DummyObjectReceiver { 

    public DummyObject[] GetDummyObjects() { 
     return new DummyObject[] { 
      new DummyObject() { Name = "a", Value = 1 }, 
      new DummyObject() { Name = "b", Value = 2 } 
     }; 
    } 

} 

public class Temp { 

    public List<DummyObjectReceiver> Receivers { get; set; } 

    public DummyObject[] GetAllDummyObjects() { 
     return Receivers.SelectMany(r => r.GetDummyObjects()).OrderBy(d => d.Value).ToArray(); 
    } 

} 

उदाहरण:

Temp temp = new Temp(); 
temp.Receivers = new List<DummyObjectReceiver>(); 
temp.Receivers.Add(new DummyObjectReceiver()); 
temp.Receivers.Add(new DummyObjectReceiver()); 
temp.Receivers.Add(new DummyObjectReceiver()); 

DummyObject[] result = temp.GetAllDummyObjects(); 
+0

+1। मैंने अपने अब हटाए गए उत्तर में "एकाधिक" पहलू को याद किया। – AnthonyWJones

+0

ठीक वही जो मैं ढूंढ रहा था :) ऑर्डरबी सहित अतिरिक्त धन्यवाद! (अभी भी केवल +1 कर सकते हैं) – Bluenuance

संबंधित मुद्दे