我在将多个数组聚合成一个“大数组”时遇到了麻烦,我认为这在 Linq 中应该是可能的,但我无法理解它:(
考虑一些返回一些虚拟对象数组的方法
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();
关于.net - 将多个数组聚合为一个数组 (Linq),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/781116/