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

Record_One
Record_Two
Records_Three


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

Record_One_Deleted
Record_Two
Record_Three_Deleted


我的问题是这样的:

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

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

B
C
D
E
A_Deleted
F_Deleted


请注意,我的列表是按字母顺序排列的,但是包含“ _Deleted”的字符串在底部。

我希望使用Lambda表达式,因为我已经可以使用类似以下内容的字母列表:

A_List.Sort((x, y) => string.Compare(x.Name, y.Name));


而且我发现单行表达式相当漂亮。

任何想法或评论都会受到任何人的感激!

最佳答案

您可以将OrderBy与bool一起使用:

list.OrderBy(str => str.EndsWith("_Deleted"))
    .ThenBy(str => str);


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

09-27 23:07
查看更多