Dot-Net
將多個數組聚合為一個數組(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... ;) } }希望它有點清楚我想要實現的目標(因為我想通過 DummyObject 具有的 int 值對這個數組進行排序…… - 但 orderby 應該沒問題,……我希望;)
您使用該
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();