2016-08-02 5 views
0

Ich habe eine Struktur von Mitarbeiterdaten und es 2 getrennte Felder von Vorname und Nachname. Ich möchte dieses Array nach Vornamen sortieren und im Fall von 2 Namen sind sie gleich und sortieren sie nach Nachnamen. Ich habe das Array bereits nach dem Vornamen sortiert, kann es aber immer noch nicht mit dem Nachnamen tun, wenn 2 Vornamen gleich sind. Ich möchte diese Art implementieren, ohne eingebaute Funktionen in .NET wie array.sort() zu verwenden, ich möchte nur Schleifen verwenden.C# - Array der Struktur ohne Verwendung einer eingebauten Funktion zu sortieren, nur mit Schleifen

public struct EmployeeData 
     { 
      public char sex; 
      public int age; 
      public int id1; 
      public int id2; 
      public int id3; 
      public string fname; 
      public string lname; 
      public int seniority; 
     } 
    static EmployeeData[] SortByFirstName(EmployeeData[] empdata) 
     { 
      int min = 0; 
      EmployeeData temp; 
      for (int i = 0; i < empdata.Length; i++) 
      { 
       for (int j = i+1; j < empdata.Length; j++) 
       { 
        if (empdata[i].fname.Length < empdata[j].fname.Length) 
        { 
         min = empdata[i].fname.Length; 
        } 
        else 
        { 
         min = empdata[j].fname.Length; 
        } 

        for (int k = 0; k < min; k++) 
        { 
         if (empdata[i].fname[k] > empdata[j].fname[k]) 
         { 
          temp = empdata[i]; 
          empdata[i] = empdata[j]; 
          empdata[j] = temp; 
          break; 
         } 
         else if (empdata[i].fname[k] == empdata[j].fname[k]) 
         { 
          continue; 
         } 
         else 
         { 
          break; 
         } 
        } 
       } 
      } 
      return empdata; 

     } 
+0

hat für Sie meine Lösung? –

Antwort

1

Ändern Sie Ihre Sortierfunktion, um sowohl den Vor- als auch den Nachnamen zu verarbeiten.

Wo Sie sagen

else if (empdata[i].fname[k] == empdata[j].fname[k]) 
    { 
     continue; 
    } 

Statt weiter, sortieren Sie die beiden Einträge nach Nachnamen ..