订单列表<object>按属性名称

时间:2015-05-11 05:48:19

标签: c#

我有一个班级

public class Test
{
    public string Value { get; set; }
}

然后

List<Test> values = new List<Test>()  //contains 10 items

列表中的某些项目的Value属性可以以字符>

开头

示例:

 Name
 Something 
 Example
 > Another one
 Demo
 Student
 > Home

如何对对象列表进行排序,以便列表中的第一项按字母顺序排序,以>开头的项目按字母顺序排序,但位于列表的末尾?

这是我到目前为止所做的:

values.Where(x => !x.Value.StartsWith(">")).OrderBy(x => x.Value);

1 个答案:

答案 0 :(得分:2)

您需要计算按

排序的密钥
List<Test> ordered = values.OrderBy(v => 
         v.Value.StartsWith(">") ? "ZZ" + v.Value : v.Value
).ToList();

“ZZ”是一个任意键,用于对以“&gt;”开头的值进行排序毕竟英语条款。 (作为字母表中的最后一个字母,没有以两个Z开头的英文单词)。 SInce“&gt;”字节值低于任何一个字母Z是不够的,因为任何有效的英语术语都会在任何与Z>

的凝视之后排序