我有个问题我正在尝试将一些值插入到mySql数据库中,但是有一个小问题。

        for (int i = 0; i < Chauffeurlijst.Count; i++)
        {
            db.Insert("Insert into route (Voertuigen_ID,Chauffeurs_ID,Planning_ID) VALUES(@voertuigid,@chauffeurid,@planningid", new List<KeyValuePair<string, object>>
        {

            new KeyValuePair<string, object>("@voertuigid", Voertuigenlijst[i].ID),
            new KeyValuePair<string, object>("@chauffeurid", Chauffeurlijst[i].ID),
            new KeyValuePair<string, object>("@planningid", planning.ID)
        });
        }


我有两个值得注意的变量:一个voertuigenlijst(一个voertuig列表)和一个chauffeurlijst(一个司机列表),但是问题是,Voertuigenlijst的数量可能小于Chauffeurlijst的数量。也可能是相同的。当司机较小时,该程序当然会崩溃,因为已经分配了voertuigen列表中的最后一项。我想做的是当voertuigenlijst [i]不再存在时,我想做i-1。有解决这个问题的好方法吗?

最佳答案

您可以通过使用另一个局部变量来确定Voertuigenlijst的索引来执行此操作。基本上,您要检查索引是否在您的范围内。如果不是,则使用列表中的最后一个索引。例如 -

for (int i = 0; i < Chauffeurlijst.Count; i++)
{
    var j = i < Voertuigenlijst.Count ? i : Voertuigenlijst.Count - 1;
    db.Insert("Insert into route (Voertuigen_ID,Chauffeurs_ID,Planning_ID) VALUES(@voertuigid,@chauffeurid,@planningid",
        new List<KeyValuePair<string, object>>
        {
            new KeyValuePair<string, object>("@voertuigid", Voertuigenlijst[j].ID),
            new KeyValuePair<string, object>("@chauffeurid", Chauffeurlijst[i].ID),
            new KeyValuePair<string, object>("@planningid", planning.ID)
        });
}


如果Voertuig> Chauffeurlijst.Count,它将使用列表中的最后一个Voertuigenlijst.Count。但是,此代码无法处理Voertuigenlijst.Count> Chauffeurlijst.Count的情况。我相信您可以使用此示例找到一个好的解决方案。您可能还需要处理一个为空的情况。

07-27 17:38