这里有两个表运行按比例分配,如何使用ASP.NET MVC 5和ASP.NET
amounttbl, amountId - amountValue
requesttbl reqId - reqAmount - Rate - soldAmount, amountId
数据:
amounttbl
amountId | amountValue
---------|------------
1 | 5000
requesttbl
reqId | reqAmount | Rate | soldAmount | amountId
------|-----------|------|------------|---------
1| 2000| 12| 0| 1
2| 500| 12| 0| 1
3| 1000| 11| 0| 1
4| 500| 10| 0| 1
5| 1000| 10| 0| 1
对于这一点,我已经准备应该卖出的动作金额5000,从高利率到低利率,这里它将从(1-2-3)总共卖出4500,它将保持500。现在它应该分配为(4 & 5)。首先,它应该做它:
4--一千五分之五百= 0.33和5 - 1000/1500 = 0.66
4将获得的500和5%的0.33将获得500 0.66%。
为此,我已经创建了一个动作,但它也存在一些问题:
id = 1;
amount = 5000;
var requests = db.request.Where(a => a.amountId== id).OrderBy(a => a.Rate);
foreach(var item in requests)
{
decimal soldamount = db.request.Where(a => a.amountId== id).Sum(a => a.reqAmount);
decimal available= amount - soldamount ;
while (available>= item.reqAmount)
{
item.soldAmount= item.reqAmount;
}
}
db.SaveChanges();
在这里,我面临两个问题,一是foreach
内:
已经有一个与此命令关联的打开的DataReader,它必须首先关闭 。
这是因为:
小数soldamount = db.request.Where(A => a.amountId == ID).SUM(A => a.reqAmount);
而且我不知道如何计算记录4,5,并设置自己的本分。
我不认为你表现出对第二个表正确的数据。 – TheVillageIdiot