我有这个对象(播放器)的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部分之后还加入?或者我应该考虑创建一个自定义比较器?
答案 0 :(得分:4)
我认为你想要的是OrderByDescending
和ThenByDescending
:
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();