I'm having trouble aggregating multiple arrays into one "big array", I think this should be possible in Linq but I can't get my head around it :(
consider some method which returns an array of some dummyObjects
public class DummyObjectReceiver
{
public DummyObject[] GetDummyObjects { -snip- }
}
now somewhere I have this:
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... ;)
}
}
hope it's somewhat clear what I'm trying to achieve (as extra I want to order this array by an int value the DummyObject has... - but the orderby should be no problem,... I hope ;)
You use the SelectMany
method to flatten the list of array returning objects into an array.
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();
}
}
Example:
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With