遍历List并向2D Array添加值

时间:2016-07-22 09:12:52

标签: c# asp.net asp.net-mvc visual-studio multidimensional-array

我的问题是我无法弄清楚如何遍历我的列表并将某些属性分配给现有的2D数组。

我有一个由50个课程组成的列表

List<Course> Courses;   

..和一个相同大小的数组(对不起,我知道逻辑很差但这些不是我的实际列表名称,我只需要它们具有相同的大小。

object[,] enrolledStudents = new object [50, 2];

我的理解是,我将能够将50个每个select Course属性添加到此数组中。虽然我可能需要一个大小为[50,50]的阵列?

无论如何,当这只是一个对象数组时,我没有问题循环遍历课程列表并添加我想要的属性

    int i = 0;
    foreach (var a in Courses)
    {
        enrolledStudents[i] = a.CourseName;
        i++;
    }

这填充了我的(当时的1维)数组,其中包含50个CourseNames,但现在我希望能够在数组中添加passmark。

理想情况下,我希望我的(现在的二维)数组看起来像

{ y = CourseName, val = PassMark }
{ y = CourseName, val = PassMark }
{ y = CourseName, val = PassMark }
{ y = CourseName, val = PassMark }
...

我会继续谷歌搜索,因为这似乎是一个基本的问题,我应该知道答案。

2 个答案:

答案 0 :(得分:4)

int i = 0;
foreach (var a in Courses)
{
    enrolledStudents[i, 0] = a.CourseName;
    enrolledStudents[i, 1] = a.PassMark;
    i++;
}

这应该有效。您需要阵列为50x2(50个球场,每个球场都有一个名称和一个传球标记),所以[50,2]是正确的。您可以交换数字,如果需要也可以[2,50],具体取决于您的偏好。但是请注意,您还需要将[i,0]更改为[0,i]。

答案 1 :(得分:2)

这是Memfisto答案的简短版本:

List<Course> Courses = new List<Course>();
string[][] enrolledStudents = new string[50][];
// Create a jagged array so we can change each item like this [i] instead of
// having to go through both indexes like this [x, y].

Courses.Select((a, i) => enrolledStudents[i] = new string[] { a.AccountName, a.PassMark });

这使用了Enumerable.Select的重载,它允许索引。