Dot-Net

將多個數組聚合為一個數組(Linq)

  • April 23, 2009

我無法將多個數組聚合成一個“大數組”,我認為這在 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();

引用自:https://stackoverflow.com/questions/781116