【发布时间】:2012-03-11 15:33:54
【问题描述】:
我正在寻求有关逻辑问题的帮助,并希望有人能够帮助我以一种有效的方式使用 C# 和 LINQ 解决我的问题。
我有以下不同条款的服务列表:
Item | RecurringMonthlyCharge | Term | Commission
-------------------------------------------------------
Service 1 | $10.00 | 12 | $100.00
Service 2 | $12.00 | 18 | $200.00
Service 3 | $14.00 | 12 | $300.00
我的目标是在将总佣金减少 $x 后平均重新分配 RecurringMonthlyCharge 字段(考虑到“期限”)。
例如,如果我将 总佣金 折扣 50.00 美元,我想将 50 美元分成 3 行并考虑期限。
以“服务 1”为例,结果如下:
10 - (50/12) = $5.83/mo
我的问题是如何在考虑到不同的术语长度的同时按比例在所有行上执行此操作。也许通过一个共同的因素或加权技术?
几点:
- 佣金为期限(即服务 1 有 100.00 美元的佣金) 根据 12 个月的协议支付)
- 应用的总折扣必须 从每月的经常性费用中平均扣除,考虑到 计入期限,总计最终折扣金额(我的 50 美元) 示例)。
尝试 #1:
private static decimal GetRecurringCostEquiv(List<QuotationItemViewModel> items)
{
var discVal = GetDiscounts(items, 2);
decimal? result = 0.00M;
decimal factor = 1.00M / items.Where(x => x.ProductTypeId == 2).Sum(i => i.RecurringTerm ?? 0);
result = items.Select(i => i.RecurringCostCore - i.RecurringTerm * factor * discVal).Sum();
return result ?? 0.00M;
}
【问题讨论】:
-
在这种情况下不应该是 10 - (50 * (12/(12+18+12))) 吗?
-
您能否详细介绍“total 佣金”和分行?在您的示例中,似乎所有 50 美元的佣金减少都已应用于服务 1?
-
@AakashM - 在我的示例中,它适用于单行。我的要求是根据总折扣减少每行的 RecurringMonthlyCharge。
-
为了清楚起见,我添加了几点。