在列表中迭代,并将值添加到2D数组中



我的问题是,我不知道如何迭代列表并将某些属性分配给现有的2D数组。

我有一份清单,其中包括50门课程

List<Course> Courses;   

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

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

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

不管怎样,当这只是一个对象数组时,我在Course列表中循环并添加我想要的属性时没有问题,就像一样

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

这用50个CourseNames填充了我的(当时是一维的)数组,但现在我希望也能在数组中添加passmark。

所以理想情况下,我希望我的(现在是二维)阵列看起来像

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

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

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]。

这是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的重载。选择允许索引的内容。

相关内容

  • 没有找到相关文章

最新更新