2012-10-19 2 views
0

J'envoie un ArrayList comme ci-dessous à partir d'un appel de service Web:Tri tableau de tableaux de chaîne

privé ArrayList TestList = new ArrayList();

qui va stocker des valeurs telles que:

"xyz (pound) (4545)" 
"abc (in) (346)" 
"def (off) (42424)" 

-je utiliser cela à cause de deux raisons:

1: Je dois chercher cette valeur dans le framework ASP.NET 1.1.

2: j'utilise testList.Sort(); avant d'envoyer.

Mais maintenant, je veux envoyer ces valeurs:

"xyz" "pound" "4545" 
"abc" "in" "346" 
"def" "off" "42424" 

donc j'ai trouvé une façon comme ci-dessous:

string[][] data = { new string[]{"xyz", "pound", "4545"}, 
        new string[]{"abc", "in", "346"}, 
        new string[]{"def", "off", "42424"}}; 

La question est: Comment puis-je trier efficacement ?? OU Y a-t-il un meilleur moyen de résoudre ce problème?

Trier se fera en fonction de premier élément:

abc 
def 
xyz 

Répondre

4

Vous écrivez que vous devez lire cette valeur en ASP 1.1, donc je suppose que vous avez une version plus moderne du framework .NET disponible sur le côté en envoyant.

Si tel est le cas, vous pouvez utiliser la méthode OrderBy de LINQ, inclus dans Framework 3.5 ou supérieur:

string[][] data = { new string[] { "xyz", "pound", "4545" }, 
        new string[] { "abc", "in", "346" }, 
        new string[] { "def", "off", "42424" } }; 
data = data.OrderBy(entry => entry[0]).ToArray(); // sorts by first field 
+0

Oui, votre hypothèse est correcte .. le site d'envoi est 4.0 – James

+0

Je me demande simplement comment cette solution diffère de mon? De plus, il est faux, car le tri est fait par un élément de tableau, pas par un champ. –

+0

Hors de question - J'ajoute ces tableaux de chaînes en boucle ... comme ceci '// Ajout de chaque information au tableau de chaînes. data = nouvelle chaîne [3]; données [0] = "xyz"; données [1] = "8787"; data [2] = "papa"; // Ajout de chaque ligne à la liste de tableaux. arrList.Add (data); // Ajout d'une liste de tableaux à l'objet de propriété. vinDescription.ShowOptionalEquipment = (chaîne [] []) arrList.ToArray (typeof (chaîne [])); '... Est-ce correct ou un meilleur moyen? – James

2

tableaux juste une sorte interne par premier élément tableau

string[][] sorted = data.OrderBy(array => array[0]).ToArray(); 
+0

Quel sera le type de ** trié ** ?? – James

+0

Tableau de tableaux de chaînes, ou 'chaîne [] []'. J'ai utilisé 'var' juste pour raccourcir –