Ich habe eine List
und ich habe die neue Reihenfolge, in der die List
die Elemente in int[]
haben soll ich, dass das Element will in List
sollte gemäß dem Artikel in int[]
nachbestellt werden. Hier ist mein Code, um das zu tun:Bestellliste von einer bestimmten Reihenfolge
class Program
{
static void Main(string[] args)
{
List<Test> tests = new List<Test>() {
new Test(){ No = 201 },
new Test(){ No = 101 },
new Test(){ No = 300 },
new Test(){ No = 401 },
new Test(){ No = 500 },
new Test(){ No = 601 }
};
int[] newOrder = new int[6] { 201, 401, 300, 101, 601, 500 };
//after the opration the List should contain items in order 201, 401, 300, 101, 601, 500
List<Test> newTests = new List<Test>();
foreach(var order in newOrder)
{
var item = tests.SingleOrDefault(t => t.No == order);
if (item != null)
newTests.Add(item);
}
}
}
Das funktioniert gut. Aber es erstellt eine separate List
und führt die Operation darauf aus. Gibt es einen besseren Weg, wo ich verwenden kann, kann gebaut werden. NET-Betrieb für diese oder kann die Operation auf dem gleichen List
ohne Erstellen dieser Temp List
etc?
Vielen Dank.
prüfen Ende ab diesem http://stackoverflow.com/questions/3062513/how-can-i -sort-generic-list-desc-und-asc Oder Sie suchen nach [Kreuzung] (http://www.dotnetperls.com/intersect) –
Wenn Sie in der gleichen Liste tun möchten, dann starten Sie die Elemente tauschen in der ursprünglichen Liste basierend auf dem Index des Ordnungsarrays. Es wird keinen Standardmechanismus geben –
Sie können Ihr Array mit Ihrer Liste verbinden und dann 'Select' ohne Reihenfolge wählen. – Vahid