public static EnemyFleetViewModel[] MergeEnemies(this IEnumerable<KeyValuePair<string, FleetData>> enemies)
{
return enemies.GroupBy(x => x.Key, EnemyDataProvider.Current.GetComparer())
.Select(x => x.First())
.GroupBy(x => x.Value.Ships.Select(s => s.Id).JoinString(","))
.Select(enemy => new EnemyFleetViewModel
{
Fleets = enemy.ToDictionary(x => x.Key, x => x.Value),
EnemyShips = enemy.FirstOrDefault().Value.Ships.Select(s => new EnemyShipViewModel { Ship = s }).ToArray(),
})
.OrderFleets()
.ToArray();
}