Linq OrderBy字符串

问题描述:

我有一个对象集合,我想按字母顺序按其名称属性进行排序。 我试过以下内容: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

我怎么没看到你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