C# C按枚举或列表进行自定义排序
我需要为列表构建一个分类器类 我希望排序规则或优先级为: SFC=1 SSG=2 SGT=3 CPL=4 SPC=5等 因此,当我排序时,我将按照正确的顺序首先按排名,然后按姓氏排序C# C按枚举或列表进行自定义排序,c#,asp.net,sorting,C#,Asp.net,Sorting,我需要为列表构建一个分类器类 我希望排序规则或优先级为: SFC=1 SSG=2 SGT=3 CPL=4 SPC=5等 因此,当我排序时,我将按照正确的顺序首先按排名,然后按姓氏排序 List<Person> person = new List<Person>(); person.Rank person.LastName person.FirstName 等等 请带我去看一篇文章或说明书。谢谢你能用LINQ吗 person.OrderBy(p => p.Rank
List<Person> person = new List<Person>();
person.Rank
person.LastName
person.FirstName
等等
请带我去看一篇文章或说明书。谢谢你能用LINQ吗
person.OrderBy(p => p.Rank).ThenBy(p => p.LastName)
或将查询语法与子句一起使用:
输出:
SFC Aaaa
SFC Bbbb
SSG Aaaa
请注意,这不会修改person。它只生成一个迭代器,当对该迭代器进行迭代时,该迭代器将生成按指定顺序返回的person结果。如果你想修改列表,你必须采取稍微不同的方法。注意,仅仅说person=ordered.ToList是不够的;因为这实际上创建了List的一个新实例。使用linq
var list = from xx in person
order by xx.Rank, xx.LastName
select xx
它将按等级和姓氏排序试试这个
var result = from m in person
orderby m.Rank, m.LastName
select m;
var result = person.OrderBy(m=> m.Rank)
.ThenBy(m => m.LastName)
.ThenBy(m => m.FirstName);
或者你可以试试这个
var result = from m in person
orderby m.Rank, m.LastName
select m;
var result = person.OrderBy(m=> m.Rank)
.ThenBy(m => m.LastName)
.ThenBy(m => m.FirstName);
您的类Person应该从接口Icomparable继承。为此,您必须实现compareto方法。然后您可以使用列表的排序方法。这是enum SFC=1 SSG=2 SGT=3 CPL=4 SPC=5等。不确定这是否会产生影响,但我正在填充person。从数据源排序,因此它是字符串类型,应该提到这一点。对不起
var result = person.OrderBy(m=> m.Rank)
.ThenBy(m => m.LastName)
.ThenBy(m => m.FirstName);