В ней есть 7 полей.
Выдаётся условие, например сортировать по 3-м полям, 5-м. Всегда разное кол-во и разная последовательность.
Сортировать нужно например так:
Выдало нам за какими полями сортировать:
class surname year
Сортировать за классом, но если классы одинаковые, то сортировать за именем, если имя одинаковое, то сортировать за годом.
Ваще не выкупаю как это сделать
Первое, что приходит на ум это паттерн спецификация и linq expression
Не уверен что в стандарте 3 есть такое, или есть?
У тебя есть хоть 1 причина использовать 3 стандарт?
Сдать на сайте универском это задание. Там нельзя новое юзать ничего
Лол, 6к людей, никто не подскажет как?)
Тебе же подсказали) linq expressions используй
Принимаешь массив параметров, из массива параметры маппишь в поля класса В сортирующем методе foreach по массиву параметров-полей и каждый раз переприсваиваешь твой сортируемый Iqueryable В конце материализуешь или отдаешь IQueryable
Как сделать аррэй пропертей? Либо через рефлексию (но если ты будешь каждый раз обращаться к параметрам класса через рефлексию, то создашь очень большой оверхэд) Либо если их всего семь штук то захардкодь их
Зачем делать масив свойств?
Как ты определяешь по каким полям нужно сортировать в коде?
С консоли считываю параметры и записываю их в масив через Split()
https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.data.expressions.predicatebuilder?view=dynamics-virtualentity-ce-9
Этот массив ты и передашь в свой сортирующий метод
Сортирующий метод это встроеный метод Array.Sort() и мне надо переопределить компаратор
Почему нельзя заюзать этот метод? https://docs.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.orderby?view=net-5.0
Не уверен что препод приймит данный варик, но я и не знаю как его юзать, нэ понэмаю
Разбирайся, материал тебе дали Для переопределения компаратора тебе нужно будет написать новый класс реализующий интерфейс IComparer (https://docs.microsoft.com/ru-ru/dotnet/api/system.collections.icomparer?view=net-5.0) Для твоих исходнных объектов и структур
Ну да, спасибо, я не знал что надо что бы компаратор написать, по приколу спрашивал что внутри него писать)))
Обсуждают сегодня