gpt4 book ai didi

c# - 将嵌套列表与逻辑相结合

转载 作者:行者123 更新时间:2023-11-30 14:00:14 25 4
gpt4 key购买 nike

我使用的游戏引擎无法序列化嵌套列表,例如 List<List<int>> .我需要的是一种将多个列表存储到一个列表中的快速解决方案。我打算自己写这篇文章,但想知道是否已经存在任何解决方案。

是否有任何包装器可以将“虚拟”嵌套列表存储到一个大列表中,同时提供您期望从单独列表中获得的功能?

最佳答案

您可以使用 Enumerable.SelectMany 展平嵌套列表:

List<int> flattened = allLists.SelectMany(l => l).ToList();

Would it be possible to unflatten a flattened list back into nested lists?

你可以使用 Tuple<int, int>将原始列表的编号存储在 Item1 中和数字本身在 Item2 .

// create sample data
var allLists = new List<List<int>>() {
new List<int>(){ 1,2,3 },
new List<int>(){ 4,5,6 },
new List<int>(){ 7,8,9 },
};

List<Tuple<int, int>> flattened = allLists
.Select((l, i) => new{ List = l, Position = i + 1 })
.SelectMany(x => x.List.Select(i => Tuple.Create(x.Position, i)))
.ToList();

// now you have all numbers flattened in one list:
foreach (var t in flattened)
{
Console.WriteLine("Number: " + t.Item2); // prints out the number
}
// unflatten
allLists = flattened.GroupBy(t => t.Item1)
.Select(g => g.Select(t => t.Item2).ToList())
.ToList();

关于c# - 将嵌套列表与逻辑相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636560/

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