2017-08-05 3 views
0

Ich verwende diese Syntax in meiner foreach Schleife und es durchläuft wie es sollte, aber gibt es eine Möglichkeit, die Schleife beim letzten Index anstelle der ersten zu starten?Umgekehrte Reihenfolge des Objekts [] Param

Dies ist die Syntax, die ich verwende, um beim ersten Element zu beginnen, aber könnte es geändert werden, so dass es rückwärts beginnt?

foreach (BD bData in bl.NameList) 
{ 
Object[] param = new Object[2]; 
param[0] = bData.m_Width; 
param[1] = bData.m_Height; 
DataGrid1.Rows.Insert(0, param); 
} 
+0

Können Sie uns erklären, warum Sie rückwärts durchgehen wollen? – mjwills

Antwort

2

Ich bin nicht sicher welcher Datentyp BD ist, aber ich muss annehmen, dass es eine indexierbare Liste ist (dh es hat eine this[int] Eigenschaft und entweder eine Count, GetUpperBound(), oder Length Eigenschaft). Ansonsten die Frage "Kann ich das in umgekehrter Reihenfolge machen?" ist eine bedeutungslose Frage, weil Sie mit einer Liste mit unbestimmter Ordnung arbeiten würden, die auch eine unbestimmte umgekehrte Reihenfolge haben würde.

Also, da es indexierbar ist, müssen Sie einfach eine for Schleife anstelle von foreach verwenden.

for (int i = bd.NameList.Count-1; i>=0; i--) 
{ 
    var bData = bd.NameList[i]; 
    Object[] param = new Object[2]; 
    param[0] = bData.m_Width; 
    param[1] = bData.m_Height; 
    DataGrid1.Rows.Insert(0, param); 
} 

Oder ..., wenn Sie den Enumerator lieben ... verwenden nur Add(X) statt Insert(0, X), die an das Ende der Liste angehängt wird. Offensichtlich funktioniert das nur, wenn Sie zu einem DataGridViewRowCollection hinzufügen und in anderen Situationen möglicherweise nicht funktionieren.

foreach (BD bData in bl.NameList) 
{ 
    Object[] param = new Object[2]; 
    param[0] = bData.m_Width; 
    param[1] = bData.m_Height; 
    DataGrid1.Rows.Add(param); 
} 
1

Sie die Liste umkehren, bevor es durch foreach setzen verwenden könnten, aber das ist nicht so effizient wie einfach eine for Schleife und Iterieren durch sie rückwärts mit, wie hier beschrieben: Possible to iterate backwards through a foreach?

Verwandte Themen