我有以下列表,我希望按价格排序:
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]);
如何对此列表列表进行排序?
答案 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
派生的类型),您可以访问这些实例的Name
,Area
和Price
属性直接,无需从类型Object
转换它们或必须记住哪个“属性”在列表中的哪个索引处。
如果您继续使用Station
信息,我猜您如果使用该课程而不是List<object>
,则会更容易。