以下是将DataTable转换为重叠多维数组的示例代码:
using System;
using System.Data;
public class Program
{
public static void Main()
{
// 创建一个示例的DataTable
DataTable dt = new DataTable();
dt.Columns.Add("Group", typeof(int));
dt.Columns.Add("Item", typeof(string));
dt.Columns.Add("Value", typeof(int));
dt.Rows.Add(1, "A", 10);
dt.Rows.Add(1, "B", 20);
dt.Rows.Add(2, "C", 30);
dt.Rows.Add(2, "D", 40);
dt.Rows.Add(2, "E", 50);
dt.Rows.Add(3, "F", 60);
// 将DataTable转换为重叠的多维数组
int maxGroup = Convert.ToInt32(dt.Compute("MAX([Group])", ""));
int[][][] array = new int[maxGroup][][];
foreach (DataRow row in dt.Rows)
{
int group = Convert.ToInt32(row["Group"]) - 1;
string item = row["Item"].ToString();
int value = Convert.ToInt32(row["Value"]);
if (array[group] == null)
{
array[group] = new int[1][];
array[group][0] = new int[] { value };
}
else
{
int[][] groupArray = array[group];
int[][] newArray = new int[groupArray.Length + 1][];
Array.Copy(groupArray, newArray, groupArray.Length);
newArray[groupArray.Length] = new int[] { value };
array[group] = newArray;
}
}
// 输出重叠的多维数组
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine("Group {0}:", i + 1);
foreach (int[] groupArray in array[i])
{
Console.WriteLine("[{0}]", string.Join(", ", groupArray));
}
Console.WriteLine();
}
}
}
这段代码首先创建了一个示例的DataTable,然后使用循环遍历DataTable的每一行,将每一行的数据按照“Group”列的值转换为重叠的多维数组。最后,输出转换后的多维数组。
请注意,这段代码假设“Group”列的值是连续的整数,并且从1开始。如果不是这种情况,可能需要进行额外的处理。
上一篇:按组检查因子变化
下一篇:按组将第二行除以第一行