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 ;)
From stackoverflow
-
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();
AnthonyWJones : +1. I missed the "multiple" aspect in my now deleted answer.Calamitous : exactly what I was looking for :) extra thanks for including orderby! (still can only +1)
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.