Вопрос связан с финансовыми продуктами, процентными ставками и двумя свойствами, которые определяют, какой процент имеет определенный продукт. Но я думаю, что фрукты и корзины легче визуализировать для этого.
Во-первых, у нас есть фрукты. Плод может иметь определенный размер (маленький, средний, большой) и цвет (красный, зеленый, синий). Это будут два разных перечисления.
Корзины будут содержать все виды фруктов, но нет двух одинаковых по цвету и форме. Но каждая возможная комбинация будет в корзине. Поскольку у нас есть три размера и три цвета, в каждой корзине будет 9 кусочков фруктов. Если бы у нас было 4 цвета, мы бы получили 12 штук.
Мы храним информацию о корзине для каждой корзины. Каждая корзина имеет словарь <{Size, Color}, Fruit>, который определяет все кусочки фруктов в корзине. Однако этот словарь может быть не полностью полным, и в этом случае все остальные комбинации являются яблоками. Словарь содержит только фрукты другого вида. (Хотя они тоже могут содержать яблоки.)
Рядом с яблоками у нас также есть груши и бананы. Да, они могут быть красными, но мне было бы интересно, какая краска использовалась, чтобы сделать их красными. Помните, это просто для визуализации проблемы. : -)
В любом случае, теперь у меня есть список корзин с корзиной фруктов. Яблоки по умолчанию, груши или бананы, если они в словаре. Но мне нужно смотреть на информацию под другим углом.
Мне нужно преобразовать эту структуру в список фруктов и по корзинам фруктов, где их можно найти, плюс размеры и цвета конкретного фрукта. Таким образом, бананы находятся в корзине 1 ({маленький, желтый}, {маленький, красный}, {средний, красный}), корзина 3 (...), корзина 4, 8 и 10. То же самое с грушами, но я могу ' в корзине 1 желтая груша, так как она уже определена для банана.
У меня есть большое преимущество: ни одна из этих структур четко не определена! Тем не менее, мне нужно представление корзины как способ предоставления информации для процесса преобразования. И мне нужно представление «Фрукты» для дальнейших вычислений, так как мне нужно сделать дополнительную математику, основанную только на самих фруктах, а не на их размере или цвете или корзине, из которой они происходят ...
Итак, есть ли хорошие предложения для структуры до и после преобразования, и как сделать само преобразование, используя Linq в C #?
<ч />
В действительности корзины - это продукты. Размер и цвет - меньшие различия на продуктах. Плоды - это процентные ставки, и мне нужна только эта ставка для математики. Группируя продукт по его процентной ставке, я могу сократить количество вычислений до нескольких. Мы имеем дело с более чем 1600 продуктами на каждый продукт (около 10х10) в 100 различных вариантах, что составляет 160 000 процентных ставок. Сами ставки, как правило, составляют от 3 до 7,5% и округляются до 1/20 процента. Таким образом, около 90 различных ставок приводят к 90 расчетам вместо 160 000 вычислений ...
И мне нужно убедить руководство сделать этот шаг, потому что они боятся, что это много работы, станет нечитабельным или его будет сложно поддерживать.
На основе процентной ставки вы можете рассчитать, сколько человек может одолжить, исходя из того, сколько он готов потратить в месяц на продукт с определенными условиями. Эта оптимизация позволит мне намного быстрее сравнивать разные продукты. Жаль, что я первый в компании, кто заметил эту интересную оптимизацию! : -)