繁体   English   中英

有没有一种方法可以将一维数组扩展为具有C#中2D数组的[0]索引中的原始值的2D数组?

[英]Is there a way to expand a one-dimensional Array into a 2D Array with the original values in the [0] index of the 2D Array in C#?

我有一个带有类别名称的数组,但是现在我需要为每个类别分配一些计数器。 有没有办法在C#中将我的1D数组扩展为2D数组?

感谢您的帮助!

编辑:

PerformanceCounterCategory[] categories;
        categories = PerformanceCounterCategory.GetCategories();

        string[] categoryNames = new string[categories.Length];
        string[] categoryNames_en = new string[categories.Length];

        for (int objX = 0; objX < categories.Length; objX++)
        {
            categoryNames[objX] = categories[objX].CategoryName;
        }
        Array.Sort(categoryNames);

        for (int objX = 0; objX < categories.Length; objX++)
        {
            Console.WriteLine("{0,4} - {1}", objX + 1, categoryNames[objX]);
        }

我有带有所有类别名称的数组categoryNames,但是在每个类别中,我都想以某种方式将一些计数器分配给它们的类别...

不幸的是,您不能使用Array.Copy,因为源数组和目标数组的维数不同。

此外,由于数组是使用固定大小初始化的,因此无法在C#中扩展数组。

您可以做的是创建一个具有第二个二元对数的新数组,然后复制值并将第二个维数设置为默认值。

void Main()
{
    int[] sourceCollection = new [] {1,2,3,4,5,6,7} ;

    var result = CopyArrayValues(sourceCollection, 2);
    result.Dump();
}
//create a new 2d array
T[,] CopyArrayValues<T>(T[] DataSource, int SecondLength)
{
    //Initialize the new array
    var Target = new T[DataSource.Length, SecondLength];
    //Copy values over
    for (int i = 0; i < DataSource.Length; i++)
    {
        Target[i, 0] = DataSource[i];
    }

    return Target;
}

输出:

在此处输入图片说明

如果可以使用数组数组,则可以按照以下模式进行操作:

int[] sourceCollection = new[] { 1, 2, 3, 4, 5, 6, 7 };
int[][] arr = sourceCollection.Select(i => Enumerable.Range(i, 4).ToArray()).ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM