![](/img/trans.png)
[英]How can i Serialized a additional property of an object inhert by Collectionbase?
[英]How can I get a list of CollectionBase items?
在C#中,如果我具有类型T的CollectionBase,并且CollectionBase中的每个项目都可以具有相同类型T的子CollectionBase,那么如何在不使用递归函数的情况下获取所有类型T对象的列表?
LINQ是否具有执行此操作的功能?
提前致谢。
Wes Dyer对此实际上写了一个不错的话题, 看看 。
至于您的情况,我认为您需要一个迭代器,可能是这样的:
public static IEnumerable<T> Flatten<T>(this IEnumerable<T> e, Func<T,IEnumerable<T>> f)
{
return e.SelectMany(c => f(c).Flatten(f)).Concat(e);
}
这是从这里得到的答案。
编辑:我只记得您也可以遍历树。
public static IEnumerable<T> Traverse<T>(T item, Func<T, IEnumerable<T>> childSelector)
{
var stack = new Stack<T>();
stack.Push(item);
while (stack.Any())
{
var next = stack.Pop();
yield return next;
foreach (var child in childSelector(next))
stack.Push(child);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.