c# - 从列表到交错数组
问题描述
我正在尝试将 a 转换List<T>
为Jagged Array T [][]
. 但是锯齿状数组中的每个数组都在重复列表的前 N 个元素。我知道我的代码正是这样做的,但是我怎样才能以不同的方式迭代我的列表,这样我就不会遍历相同的 N 个元素?
请忽略DataTree<T>
类型,它只是用于创建锯齿状数组的参考数据结构拓扑。
public static T[][] ToJaggedArrray<T>(this List<T> data, DataTree<T> dataTree)
{
// Get total elements on each row
//dataTree.DataCount = total elements in data structure
int totalElementsPerArray = dataTree.DataCount / dataTree.BranchCount;
// dataTree.BranchCount = number of elemets/rows
int numElements = dataTree.BranchCount;
T[][] outPut = new T[numElements][];
for (int i = 0; i < outPut.Length; i++)
{
T[] temp = new T[totalElementsPerArray];
for (int j = 0; j < temp.Length; j++)
{
temp[j] = data[j];
}
outPut[i] = temp;
}
return outPut;
}
/* Output:
54
19
83
80
28
48
46
16
52
38
41
10
Element(0): 54 19 83 80
Element(1): 54 19 83 80
Element(2): 54 19 83 80
*/
/* Expected Output:
54
19
83
80
28
48
46
16
52
38
41
10
Element(0): 54 19 83 80
Element(1): 28 48 46 16
Element(2): 52 38 41 10
*/
解决方案
我相信您的问题是您不了解循环。在您的情况下,嵌套的 for 循环将始终从 0 开始,并且始终会从数据中准确获取 temp.length 元素。
你明白我的意思了吗?
推荐阅读
- java - java.lang.ClassNotFoundException:org.springframework.cloud.client.discovery.composite.reactive.ReactiveCompositeDiscoveryClientAutoConfig
- php - 有人能告诉我 DateTimeZone::getOffset PHP 函数是如何工作的吗?
- apache-kafka - 我们可以更新 kafka 0.10 中的消费者偏移量吗?
- robotframework - RobotFramework/RIDE 无法通过示例测试 - “未找到名称为 'Run ${sakura}' 的关键字。”
- azure - 如何使用逻辑应用程序将数组值插入表中
- docker - 使用 Google Cloud Build,我如何运行执行 docker 和 kubectl 命令的 Makefile?
- sql - 如何正确地将这个复杂的 JSON 转换为 SQL 表?
- angular - 我们可以创建 react-native + Angular 应用程序吗?是的,那怎么办?
- c# - 如何从 C# 中的匿名 select 语句返回多个值
- javascript - 我们可以在 firebase 的云功能中使用 async/await 吗?