【发布时间】:2016-04-27 05:42:26
【问题描述】:
我必须根据用户输入的百分比将客户分配给不同的员工。例如,我有 10 个客户属于 salesman3,我为 salesman1 输入 50%,为 salesman2 输入 50%。这意味着这些客户中有 5 个去 salesman1,另外 5 个去 salesman2。我想通过更新数据库中的推销员 ID 来做到这一点。我已经放置了一些计数器以确保它正在输入百分比并且它正在循环遍历整个销售人员列表。它证明它正在运行整个 foreach 循环并获得百分比,但是当我检查数据库时,它只更新一次。这是我拥有的代码。如果我这里没有东西,我很抱歉。我是新用户和初学者编码器。谢谢。
public ActionResult Submit(string json, string terminated_id, string total_clients)
{
int T_ID = Convert.ToInt32(terminated_id);
int T_clients = Convert.ToInt32(total_clients);
List<emp_info> list = JsonConvert.DeserializeObject<List<emp_info>>(json);
int counter = 0;
foreach (var obj in list)
{
counter++;
}
int counting = 0;
string[] array = new string[counter];
int i = 0;
foreach (var obj in list)
{
counting++;
array[i] = obj.percent;
i++;
if (obj.percent != "")
{
int count = Convert.ToInt32((double)T_clients * (Convert.ToDouble(obj.percent) / 100));
var selected_list = db.Clients.ToList().Take(count);
var query = from cust in selected_list
where cust.Salesperson_ID == T_ID
select cust;
foreach (Client cust in query)
{
int int_id = Convert.ToInt32(obj.ID);
cust.Salesperson_ID = int_id;
db.SaveChanges();
}
//db.SaveChanges();
//return View();
}
}
ViewBag.counting = counting;
ViewBag.percentages = array;
ViewBag.counter = counter;
db.SaveChanges();
return View();
}
【问题讨论】:
-
只更新一次是什么意思?
-
例如,如果我必须分配属于 salesperson3 的 10 个客户,并且如果我将 50% 用于 salesperson1,将 50% 用于 salesperson2,那么它只会将前 5 个客户更新为 salesperson1,而其他 5 个将继续分配给salesperson3。
-
调试时'list'中有多少对象?
-
但是如果
count的值为5,那么只有这5个会被更新(不是10个)。 -
您这里有一些糟糕的代码,而且只需不到您所展示的一半即可完成。没有时间知道,但我会在一个小时左右添加一个答案。首先将
(string json, string terminated_id, string total_clients)更改为(List<emp_info> json, int terminated_id, int total_clients)并删除前 3 行代码。要获取counter,请使用int counter = json.Count;。但是所有这些都表明您的视图存在其他问题,并且它们将数据发送到控制器。
标签: c# asp.net-mvc linq