想要看看是否有人可以提供有关如何在使用selectmany时压缩列表聚合的任何建议。欢迎任何建议。
我想要包含该计划在内的所有元素的清单。创建一个我可以搜索的列表。
谢谢!
Program prog = new Program
{
Mods = new List<Mods>
{
new Mods
{
Acts = new List<Acts>
{
new Acts
{
},
new Acts
{
}
}
},
new Mods
{
Acts = new List<Acts>
{
new Acts
{
},
new Acts
{
}
}
},
}
};
//everything is an Element.
var pes = new List<Element> {prog};
pes.AddRange(prog.Mods.ToList<Element>());
pes.AddRange(prog.Mods.SelectMany(m => m.Acts).ToList<Element>());
答案 0 :(得分:0)
这个怎么样?
var pes =
Enumerable.Repeat<Element>(prog, 1)
.Concat(prog.Mods)
.Concat(prog.Mods.SelectMany(m => m.Acts))
.ToList();
这假设IEnumerable<T>
是协变的(C#4.0或更高)。如果不是,你可以这样做:
var pes =
Enumerable.Repeat<Element>(prog, 1)
.Concat(prog.Mods.Cast<Element>())
.Concat(prog.Mods.SelectMany(m => (Element)m.Acts))
.ToList();