c#中的排序列表替代

Cru*_*lIO 1 .net c# list generic-collections

我有许多对象,都来自同一个类(ColorNum)每个对象有2个成员变量(m_Color和m_Number)

例:

ColorNum1(Red,25)
ColorNum2(Blue,5)
ColorNum3(Red,11)
ColorNum4(White,25)
Run Code Online (Sandbox Code Playgroud)

这4个对象位于ColorNumList中

List<ColorNum> ColorNumList = new List<ColorNum>();
Run Code Online (Sandbox Code Playgroud)

现在我想订购列表,以便mColor ="Red"的对象位于顶部.我不关心其余物体的顺序.

我的谓词方法应该是什么样的?

Kei*_*ith 11

使用linq:

var sortedRedAtTop = 
    from col in ColorNumList 
    order by col.Color == Red ? 1 : 2
    select col;
Run Code Online (Sandbox Code Playgroud)

或者列表的排序方法:

ColorNumList.Sort( (x,y) => 
    (x.Color == Red ? 1 : 2)-(y.Color == Red ? 1 : 2) );
Run Code Online (Sandbox Code Playgroud)