只是一種思路:
class Journey
{
public enum JourneyStatus
{
Enroute,
Finished,
Error
}
public string Name;
public JourneyStatus Status;
}
使用排序依據:
var journeys = new List<Journey>();
journeys.Add(new Journey() { Name = "Test1", Status = Journey.JourneyStatus.Enroute });
journeys.Add(new Journey() { Name = "Test2", Status = Journey.JourneyStatus.Error });
journeys.Add(new Journey() { Name = "Test3", Status = Journey.JourneyStatus.Finished });
journeys.Add(new Journey() { Name = "Test4", Status = Journey.JourneyStatus.Enroute });
journeys = journeys.OrderBy(x => x.Status).ToList();
foreach (var j in journeys)
Console.WriteLine("{0} : {1}", j.Name, j.Status);
輸出:
Test1 : Enroute
Test4 : Enroute
Test3 : Finished
Test2 : Error
或者你可以修改拉姆達傳遞給排序依據映射狀態的值字符串到int
。
在某些情況下,您可能想要實施IComparer<T>
,就像Jon說的那樣。它可以幫助保持排序邏輯和類定義本身在一個地方。