2016-06-10 13 views
0

Ich habe eine Liste von Zeichenfolgen in Reihenfolge Ich habe "1" "2" "5" "4" "3" etc .. Ich habe auch eine andere Klasse an eine Reihe von Elementen gebunden, die verschiedene Eigenschaften enthält, von denen eine Int ist OrderStringWie zwei Eigenschaften vergleichen und dann sortieren

Wie ordne ich die Reihenfolge der Objekte entsprechend meiner Liste der Zeichenketten neu an.

list<string> L_string = new string { "1" "2" "4" "3" "5" "6" "7"} 

Auch eine Liste der Elemente, die Eigenschaften wie Name, Nummer, Datum an sie angehängt.

Unter der Annahme, l_Item erbt von Produkten

var SortedMan = l_Item.OrderBy (o => o.number.ToString()) CompareTo (L_string))). So etwas, aber ein funktionierender Code.

Also grundsätzlich die Menge der Elemente in beiden wird gleich sein. Ich brauche es, um die Liste der Elemente in der Reihenfolge ihrer Anordnung im L_string neu anzuordnen.

+1

Geben Sie ein Codebeispiel der anderen Liste, weil ich nicht ganz verstehe. – prospector

+0

So nicht klar, und diese Syntax für die Liste L_string ist nicht gültig – Paparazzi

+0

So ist die Frage, wie Produktliste basierend auf Bestellung in anderen Liste zur Verfügung gestellt? –

Antwort

0

Sie this GenericComparer class Implementierung verwenden können.

Verwenden somehting wie dieses

Array.Sort(YourArray, new GenericComparer()); 

Oder

Array.Sort(YourArray, new PropertyDescriptorComparer()); 

für Eigentum der Klasse.

0

I_Item Unter der Annahme ist eine Liste <Produkt>:

var sortedList = new List<Product>(); 
foreach (var value in L_string) 
{ 
    sortedList.AddRange(I_Item.Where(x => x.number.ToString() == value)); 
} 
0

Unter der Annahme, dass die Einträge in L_string tatsächlich um Elemente in l_item entsprechen, können Sie etwas tun:

var sorted = l_item 
    .Where(item => L_string.Contains(item.number.ToString())) 
    .OrderBy(item => L_string.IndexOf(item.number.ToString())); 

Die Where Methode filtert die Sammlung und gibt eine neue Kollektion mit allen passenden Elementen. OrderBy sortiert die Sammlung basierend auf dem Index des Artikels in der L_string Sammlung um.

Verwandte Themen