Я видел тонну сообщений, в которых говорилось о OrderBy (). ThenBy (), Sort (), IComparable и тому подобном. Мне не удалось правильно отсортировать список.
Мне нужно отсортировать список рецептов a-z по результату (строке) и, если рецепт можно обработать. Это сделало бы готовые рецепты в верхней части списка, отсортированного по алфавиту, а неприготовленные рецепты появились ниже, также отсортированные по алфавиту (в результате получается строка, название элемента). Примерно так:
До:
- "стрелка": Ковка
- "лодка": не-Ковка
- "яблоко": не-Ковка
- "коробка": Ковка
- "может": Ковка
После
- "стрелка": Ковка
- "окно": Ковка
- "может": Ковка
- "яблоко": не-Ковка
- "лодка": без Ковка
Это обеспечит лучший результат для моих игроков.
Примерно так выглядит класс Recipe:
public class Recipe : ScriptableObject
{
public Ingredient[] ingredients;
public string result;
public bool Craftable => //Not so complex and boring logic here;
}
Вот как я сейчас пытаюсь это сделать:
Recipe[] recipes = _recipes.OrderBy(r => r.Craftable).ThenBy(r => r.result).ToArray();
Это сортирует a-z, но не отделяет подготавливаемые и не поддающиеся обработке.
Я был бы рад узнать, есть ли уже вопрос с ответом, и если он окажется дубликатом.
Кроме того, я знаю, что я мог бы сделать это, просто отделив готовые Рецепты от необрабатываемых в двух разных массивах, а затем отсортировав их a-z по отдельности, но это было бы просто скучно. Я хочу что-то лучше и веселее.
Мне бы хотелось узнать, какой маршрут наиболее эффективен, потому что я могу обработать миллионы рецептов в секунду.
Заранее спасибо за любую помощь.