2013-04-11 62 views
3

我有一個對象集合,我想按字母順序按其名稱屬性進行排序。 我試過以下內容:Linq OrderBy字符串

List<Item> itemsToSort = dataProvider.Items.ToList(); 
List<Item> sortedItems = itemsToSort.OrderBy(x=>x.Name).ToList(); 

哪個行不通。這些項目仍按照以前相同的方式列出,而不是按字母順序排列。

編輯

下面是一個更完整的示例:

類:

public class MeasureStation 
{ 
    #region Properties 

    public int ID 
    { 
     get { return _measureStation.ID; } 
     set { _measureStation.ID = value; } 
    } 

    [Required(ErrorMessage = "Navn skal udfyldes")] 
    public String Name 
    { 
     get { return _measureStation.Name; } 
     set { _measureStation.Name = value; } 
    } 

    public DateTime? DateEstablished 
    { 
     get { return _measureStation.DateEstablished; } 
     set { _measureStation.DateEstablished = value; } 
    } 

    public DateTime? OperationPeriodStart 
    { 
     get { return _measureStation.OperationPeriodStart; } 
     set { _measureStation.OperationPeriodStart = value; } 
    } 
    . 
    . 
    and so on... 
} 

查詢是:

measureStations = dataProvider.MeasureStations.ToList(); 
var orderedMeasureStations = measureStations.OrderBy(x => x.Name); 

當考慮看看orderedMeasureStations查詢結果,它看起來像以下內容: 條目開始於:

F... 
S... 
a... 
L... 

所以很顯然不按名稱排序。

+7

確定嗎?這應該工作海事組織,顯示你的完整代碼..你確定'名稱'是'字符串'? – 2013-04-11 11:23:50

+0

你確定他們沒有正確的順序? – Charleh 2013-04-11 11:24:00

+0

同意,這應該工作... – 2013-04-11 11:24:02

回答

2

我怎麼沒看到你class MeasureStation將永遠工作

什麼是_measureStation,是它this

如果是,那麼它應該是什麼樣子,請注意屬性不能有相同的名稱作爲其各自的私有成員

public class MeasureStation 
    { 
    private int id;//private is optional as it is default 
    public int ID 
    { 
     get { return this.id; } 
     set { this.id = value; } 
    } 
    private String name;//private is optional as it is default 
    public String Name 
    { 
     get { return this.name; } 
     set { this.name = value; } 
    } 
    } 

雖然,它等同於用自動屬性類:

public class MeasureStation 
{ 
    public int ID {get;set;} 
    public String Name {get;set;} 
} 

所以,我跑反對他們兩個

private static void Main(string[] args) 
{ 
    List<MeasureStation> itemsToSort 
    = new List<MeasureStation>() 
     { 
      new MeasureStation() {ID = 01, Name = "Bbbb"}, 
      new MeasureStation() {ID = 01, Name = "Aaaa"}, 
      new MeasureStation() {ID = 01, Name = "Cccc"} 
     }; 
    List<MeasureStation> sortedItems = itemsToSort.OrderBy(x => x.Name).ToList(); 

    Console.WriteLine("******itemsToSort*****"); 
    foreach (var item in itemsToSort) 
     Console.WriteLine(item.Name.ToString()); 

    Console.WriteLine("******sortedItems*****"); 
    foreach (var item in sortedItems) 
     Console.WriteLine(item.Name.ToString()); 

    Console.ReadLine(); 
} 

具有得到有序輸出:

******itemsToSort***** 
Bbbb 
Aaaa 
Cccc 
******sortedItems***** 
Aaaa 
Bbbb 
Cccc