ordina l’array di stringhe usando LINQ

Ho una matrice di stringhe dichiarare come sotto

string[][] data = new string[3][]; string[] name = new string[10]; string[] contact = new string[10]; string[] address = new string[10]; 

Dopo aver riempito i dati per nome, indirizzo e contatto, l’indirizzo può essere una stringa vuota in alcuni dati. Successivamente lo assegno ai dati dell’array di stringhe.

 data[0] = name; data[1] = contact; data[2] = address 

Come posso ordinare l’array di stringhe per nome usando LINQ. Provo dati = data.orderby (y => y [0]). ToArray ();

ma questo tipo cambierà la sequenza dell’array di stringhe. Supponiamo che i dati [0] siano il nome del negozio ma dopo l’ordinamento diventa indirizzo del negozio.
Qualcuno ha idea di come posso ordinare il record? Per favore aiuto

Puoi usare questo per ordinare l’array del nome (che è memorizzato nei data[0] ):

 data[0] = data[0].OrderBy(x => x).ToArray(); 

Tuttavia, ciò farà sì che i dati memorizzati negli altri array perdano qualsiasi correlazione significativa con l’array del nome (ad esempio, il name[3] molto probabilmente non corrisponderà al contact[3] ). Per evitare questo, ti consiglio vivamente di utilizzare una class per archiviare queste informazioni:

 class MyClass // TODO: come up with a better name { public string Name { get; set; } public string Contact { get; set; } public string Address { get; set; } } 

Per dichiarare la matrice, utilizzare:

 MyClass[] data = new MyClass[10]; data[0] = new MyClass // Populate first record { Name = "...", Contact = "...", Address = "...", }; 

E per ordinare l’array:

 data = data.OrderBy(x => x.Name).ToArray(); 

O questo:

 Array.Sort(data, (x, y) => x.Name.CompareTo(y.Name)); 

La seconda opzione è più efficiente in quanto riorganizza gli elementi in posizione e non richiede l’assegnazione di una nuova matrice per archiviare i risultati.

In alternativa, usa una List :

 List data = new List(10); data.Add(new MyClass // Populate first record { Name = "...", Contact = "...", Address = "...", }); 

E per ordinare la lista:

 data.Sort((x, y) => x.Name.CompareTo(y.Name)); 

Questo avrà prestazioni simili al metodo Array.Sort , tuttavia è un’opzione molto migliore se devi essere in grado di aggiungere o rimuovere elementi dal tuo elenco in modo dinamico.