C#如何使用lambda表达式对字符串列表进行排序,具体取决于每个项目中的字符子集

Joh*_*ion 2 c# sorting lambda list

我有一个字符串列表,它们是记录的名称.一个例子:

Record_One
Record_Two
Records_Three
Run Code Online (Sandbox Code Playgroud)

有时,我想删除一条记录.出于录制目的,我不删除字符串.我通过在末尾添加单词_Deleted来改变它,例如:

Record_One_Deleted
Record_Two
Record_Three_Deleted
Run Code Online (Sandbox Code Playgroud)

我的问题是:

如何将所有_Deleted记录放在底部,按字母顺序保留我的字符串列表?

预期的结果看起来像(使用新的示例数据集):

B
C
D
E
A_Deleted
F_Deleted
Run Code Online (Sandbox Code Playgroud)

请注意,我的列表按字母顺序排列,但包含"_Deleted"的字符串位于底部.

我希望使用Lambda Expression,因为我已经可以使用以下内容按字母顺序排列列表:

A_List.Sort((x, y) => string.Compare(x.Name, y.Name));
Run Code Online (Sandbox Code Playgroud)

我发现一行表达式相当光滑.

任何可能拥有它们的人都非常感谢任何想法或评论!

Tim*_*ter 8

你可以使用OrderBybool:

list.OrderBy(str => str.EndsWith("_Deleted"))
    .ThenBy(str => str);
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://ideone.com/m6Zgd