edward_freedom, а что именно не так в коде по ссылке? Он вполне рабочий, делает ровно то, что от него требовалось, покрыт тестами, и в принципе не нарушает каких-то общепринятых вещей.
Самое большое зло - то что он реализован на листах, а не на ienumerable, и что имя параметра не очень.
Может быть есть какие-то стандарты, которых все придерживаются?
Стандартов не существует, по тому во всяких тарифах и соглашениях следует писать, как расчитывается оплата.
А по какой схеме считать - отталкивайтесь от стоимости производства и ожиданий ваших клиентов (эта схема не должна быть контр-интуитивной или явно невыгодной для одной из сторон)
вот ссылка на доку: https://docs.microsoft.com/ru-ru/dotnet/api/system...