Объединение нескольких массивов в один массив (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();