2017-06-12 6 views
0

Ich habe meine eigene Auswahlsortiermethode implementiert, die ihren Job zum größten Teil zu erledigen scheint; Wenn ich Dateien auf einem Excel-Blatt drucke, druckt der Drucker das erste Element jedoch nicht. Ich bin mir nicht sicher, ob die Sortiermethode die Ursache des Problems ist. Meine Testmethode für meine Sortiermethode besteht, weshalb ich bezweifle, dass das die Quelle ist. Meine Sortiermethode ist unten gezeigt. Ist der Umfang oder die Reihenfolge oder der Vorgang fehlerhaft? Wenn ich es manuell auf Papier durchführe, sortiert sich alles richtig.C#: Meine Sortiermethode/Druckklasse druckt nicht den ersten Eintrag

public bool sortMaterial() 
    { 
     for (int i = 0; i < salesList.Count - 2; i++) 
     { 
      Sales curr = salesList[i]; 
      Sales temp; 
      Sales min = curr; 
      int swap = 0; 

      for (int j = i + 1; j < salesList.Count; j++) 
      { 
       temp = salesList[j]; 

       if (String.Compare(temp.material, min.material) == -1) 
       { 
        min = temp; 
        swap = j; 
       } 
      } 

      salesList[i] = min; 
      salesList[swap] = curr; 
     } 

     return true; 
    } 
+1

Was hat Ihr Debugging gezeigt? –

+0

für (int i = 0; i

+0

Warum gibt diese Methode einen booleschen Wert zurück, der immer wahr ist? Scheint so, als ob du stattdessen eine Leere zurückgeben möchtest. – Toolmaker

Antwort

1

Eine saubere Art und Weise individuelle Sortierung zu tun ist durch die IComparer<T> interface Umsetzung:

public class SalesMaterialComparer : IComparer<Sales> { 
    public int Compare(Sales x, Sales y) { 
     return String.Compare(x.material, y.material); 
    } 
} 

Sie Ihren benutzerdefinierten Vergleich zur LINQ OrderBy() Methode übergeben können.

IEnumerable<Sales> salesList; 
var myComparer = new SalesMaterialComparer(); 

var sorted = salesList.OrderBy(s => s, myComparer); 
Verwandte Themen