排序列表C#

时间:2018-04-07 14:30:48

标签: c# list sorting

我有以下列表,我希望按价格排序:

sync

我试图用以下方式对其进行排序:

List<object> StationList = new List<object>();
List<object> ListEntry = new List<object>();

ListEntry.Add(Name);  //string
ListEntry.Add(Area);  //string
ListEntry.Add(Price); //int

StationList.Add(ListEntry);

这给了我错误:

List<object> SortedList = StationList.OrderBy(list => list[2]);

如何对此列表列表进行排序?

1 个答案:

答案 0 :(得分:4)

正如评论中所指出的,使用List<object>是一个坏主意。特别是当用作可以(并且应该)保持在更好结构中的数据的容器时。

看起来你的StationList实际上应该是一个电台列表。因此,创建描述工作站的结构是个好主意。也许是这样的:

public class Station
{
    public string Name { get;set; }
    public string Area { get;set; }
    public int Price { get;set; } /* although 'decimal' might be a better type */
}

现在StationList可以定义并初始化为:

List<Station> StationList = new List<Station>();
/* although you could just call it 'Stations' */

现在创建一个新的Station并将其填入数据并将其添加到StationList

Station station = new Station();
station.Name = Name;
station.Area = Area;
station.Price = Price;

StationList.Add(station);

如果您想按价格订购电台列表,可以这样做:

List<Station> SortedList = StationList.OrderBy(entry => entry.Price).ToList();

哪个(imho)比list => list[2]更具可读性。此外,整个事情是类型安全的,这意味着您可以确定StationList只包含Station类型的实例(或Station派生的类型),您可以访问这些实例的NameAreaPrice属性直接,无需从类型Object转换它们或必须记住哪个“属性”在列表中的哪个索引处。

如果您继续使用Station信息,我猜您如果使用该课程而不是List<object>,则会更容易。