BattleInfoPlugin.ViewModels.Extensions.OrderFleets C# (CSharp) Method

OrderFleets() public static method

public static OrderFleets ( this fleets ) : IEnumerable
fleets this
return IEnumerable
        public static IEnumerable<EnemyFleetViewModel> OrderFleets(this IEnumerable<EnemyFleetViewModel> fleets)
        {
            return fleets.OrderByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 3))
                        .ThenByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 2))
                        .ThenByDescending(enemy => enemy.Fleet.Rank.FirstOrDefault(x => x == 1))
                        .ThenBy(enemy => enemy.EnemyShips.Length)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(0)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(1)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(2)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(3)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(4)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.EnemyShips.ElementAtOrDefault(5)?.Ship?.Id ?? 0)
                        .ThenBy(enemy => enemy.Key);
        }