如何调整此orderBy对象列表以考虑重复属性?

时间:2015-04-16 14:08:33

标签: c# list

我有这个对象(播放器)的int属性" pVictories"和"指标"。这里有一个玩家列表,我将会播放#34;种子"他们根据他们拥有的胜利数量,即命令他们。因此,拥有最多胜利的人获得列表中的0位,下一位获得最多1位,等等。

如果我想以这种方式订购,那么很好,我知道该怎么做。但是,如果他们拥有相同数量的胜利,我会坚持如何通过如何反应来表明顺序。应该发生的是我希望他们比较两个指标属性,并为具有更高指标int的人提供更高的位置。假设两个玩家都有4个胜利,但玩家1的指标值为" 4"而另一个" 2",我想让4岁的玩家获得更高的位置。

如何调整此行,或添加一行以实现此目的?这就是我所拥有的:

//Sort a list based on number of Victories 
List<Player> tempList = listOfPlayers.OrderBy(o => o.pVictories).ToList();
tempList.Reverse();

是否有可能按顺序添加另一个较小的条件?如同在o.pVictories部分之后还加入?或者我应该考虑创建一个自定义比较器?

3 个答案:

答案 0 :(得分:4)

我认为你想要的是OrderByDescendingThenByDescending

List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories)
                                     .ThenByDescending(p => p.Indicator)
                                     .ToList();

答案 1 :(得分:3)

您可以使用ThenBy扩展程序:

List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories).ThenByDescending(p=>p.Indicator).ToList();

答案 2 :(得分:2)

List<Player> tempList = listOfPlayers.OrderByDescending(o => o.pVictories).ThenByDescending(x => x.Indicator).ToList();

或使用查询语法

List<Player> tempList  = (from x in listOfPlayers
       orderby x.pVictories descending, x.Indicator descending
       select x).ToList();