Объединение нескольких массивов в один массив (Linq)

у меня возникли проблемы с агрегацией нескольких массивов в один "большой массив" , я думаю, что это должно быть возможно в Linq, но я не могу обойти это: (

рассмотрим некоторый метод, который возвращает массив некоторых dummyObjects

public class DummyObjectReceiver 
{
  public DummyObject[] GetDummyObjects  { -snip- }
}
где-то у меня есть это:
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... ;)
  }
}

надеюсь, что это несколько ясно, чего я пытаюсь достичь (как я хочу, чтобы заказать это массив int значение в DummyObject имеет... - но этого не должно быть никаких проблем,... Я надеюсь ;)

1 ответов


использовать 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();