3

我的問題是我無法弄清楚如何迭代我的列表並將某些屬性分配給現有的2D數組。遍歷列表並將值添加到2D數組

我有包括50場

List<Course> Courses; 

..和同樣大小的數組(清單抱歉,我知道的邏輯是窮人,但這些都不是我的實際列表的名字,我只是需要他們具有相同的尺寸。

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

我的理解是,我將能夠給每個選擇課程屬性加50這個陣,雖然也許我需要大小的數組[50,50]爲這個?

不管怎樣,當這只是對象的數組,我沒有問題,通過課程列表循環和增加,我想,像這樣

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

該填充我(當時1維)陣列50個CourseNames財產,但現在我希望能夠將數字也添加到數組中。

所以最好我想我(現在的2維)陣列的樣子

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

我會繼續在此期間谷歌搜索,因爲這似乎是我應該知道答案了這樣一個基本問題。

回答

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

+0

謝謝你。現在似乎很明顯。你知道一種方法,我可以將它們分別命名爲y和val,以便稍後在我的代碼中調用它們嗎? – bjjrolls

+0

@bjjrolls你能詳細說一下嗎?我不確定你想要命名y和val,以及你希望以後在代碼中以什麼方式調用它們。 – Memfisto

+0

正如在這個小提琴http://jsfiddle.net/JVNjs/735/ 我想我的數據是在這種格式 – bjjrolls

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的一個重載允許指數。

+0

謝謝,這是優雅的,我迄今爲止還沒有看到這樣做。 – bjjrolls

+0

鋸齒狀陣列更適合使用Select還是僅僅是您的偏好?感謝更短的版本! – Memfisto

+0

鋸齒形陣列使用Select更好,因爲它們更易於使用。你也可以得到像這樣的'[int]'的東西,你不必同時擁有兩個索引。多數數組需要兩個索引'[int,int]'。 – 2016-07-22 10:04:50