2017-06-12 35 views
0

我已经实现了我自己的选择排序方法,似乎大部分时间都在做它的工作;但是,当我将文件打印到Excel表格时,打印机不打印第一个项目。我不确定排序方法是否是问题的根源。我的排序方法的测试方法通过,这就是为什么我怀疑这是源。我的排序方法如下所示。它在范围,订单或操作中是否有错误?当我在纸上手动移动时,所有东西都可以正确排序。C#:我的排序方法/打印类不打印第一个条目

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

你的调试显示了什么? –

+0

for(int i = 0; i

+0

为什么这个方法返回的布尔值总是正确的?似乎你希望它返回一个空洞。 – Toolmaker

回答

1

一个整洁的方式做自定义排序是通过实现IComparer<T> interface

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

您可以将您的自定义比较的LINQ OrderBy()方法。

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

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