有没有一种方法可以将一个1维的List拆分为一个2维数组?

14 浏览
0 Comments

有没有一种方法可以将一个1维的List拆分为一个2维数组?

由于C#非常灵活(部分原因是由于其解释性质),我想知道是否有现成的功能可用。否则,我将自己编写。

我有一个 List,使用嵌套循环来遍历会更容易/方便:

for (col = 1 to lastCol)
    for (row = 1 to lastRow)
        scrutinize(row, col);

补充:也许我应该在列上使用 foreach

0
0 Comments

问题的出现原因:问题的提问者想要将一个一维的List拆分成一个二维数组,但是由于Model是不可更改的,不能将其转化为Dictionary类型。提问者尝试了一些代码,但是没有得到满意的结果。

解决方法:通过使用LINQ,可以将一个一维的List拆分成一个二维数组。具体的解决方法如下:

List list = new List() { 1, 2, 3, 4, 5, 6, 7, 8 };
var array =
    list.Select((v, i) => new { Value = v, Index = i})
        .GroupBy(x => x.Index / 4, x => x.Value, (key,values) => values.ToArray())
        .ToArray();

这段代码将一个简单的整数列表拆分成了一个二维数组。通过使用Select和GroupBy方法,首先给每个元素分配了一个索引,然后根据索引进行分组,每组包含四个元素。最后,将每个组转化为一个数组,并将所有组合并成一个二维数组。

这个解决方法创建的是一个嵌套数组(jagged array),而不是一个真正的二维数组。对于提问者来说,这似乎没有什么区别。

文章最后提到提问者尝试了一些其他的方法,但是没有得到满意的结果。他们还提到Model需要是可遍历的(IEnumerable),但是这个要求并不明确。

最后,提问者在评论中解释了他使用"insist"这个词的原因,表示在西班牙语中这个词的意思是一遍又一遍地询问或说同一件事情。对于提问者来说,他并不是强制要求,只是多次询问而已。并且,评论中还对提问者的英语表达能力给予了肯定,并提到了MVVM(Model-View-ViewModel)的知识。

0