gpt4 book ai didi

c# - 编辑列表包含本身包含对象的对象,等等

转载 作者:行者123 更新时间:2023-11-30 13:59:23 24 4
gpt4 key购买 nike

我对对象列表有疑问...

这个 List 包含的对象本身包含对象,依此类推......(所有对象都是同一类型)

我的对象看起来像这样:

  public class MyObject (...)
{
...
public MyObject[] Object;
...
}

我想更改这些对象的一些变量(根据某些参数),为此我想使用 LINQ。

我的问题是我真的不知道如何做一些事情来通过我所有的递归列表,无论它们的级别如何。

我希望我说得尽可能清楚。

预先感谢您的帮助。

最佳答案

您可以编写一个简单的递归方法来轻松完成您想做的事情:

public static void Touch(MyObject obj, string otherParameter)
{
obj.Value = otherParameter;
foreach (var child in obj.Object)
{
Touch(child, otherParameter);
}
}

如果您真的非常想要一种更像 LINQ 的方法,或者您经常这样做以致需要一种更通用的方法,您可以使用类似这样的方法:

public static IEnumerable<T> FlattenTree<T>(IEnumerable<T> source, Func<T, IEnumerable<T>> selector)
{
//you could change this to a Queue or any other data structure
//to change the type of traversal from depth first to breath first or whatever
var stack = new Stack<T>();
while (stack.Any())
{
T next = stack.Pop();
yield return next;
foreach (T child in selector(next))
stack.Push(child);
}
}

然后你可以像这样使用它:

MyObject root = new MyObject();

var allNodes = FlattenTree(new[] { root }, node => node.Object);
foreach (var node in allNodes)
{
node.Value = "value";
}

关于c# - 编辑列表包含本身包含对象的对象,等等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com