·········································································································
开发工具与关键技术:Visual Studio
作者:Amewin
撰写时间:2019年1月16日
·········································································································
版权声明:本文为博主原创文章,转载请附上博文链接!
第一次在CDNS发表文章,希望能给浏览的你,提供帮助。
我要讲的是利用关键字foreach 进行sql数据表批量新增数据。
我要讲的是利用关键字两个foreach 进行sql数据表批量新增数据。
官方解释:C# 也支持 foreach 循环,使用foreach可以迭代数组或者一个集合对象。
数据库结构示例
代码示例
public ActionResult InsertGlobal()
{
ReturnJsonVo retentJson = new ReturnJsonVo();
try
{
var num = 0;
var total = 0;
var lsitOpType = myModels.JD_OpType.Select(m => m.OpTypeID).ToList();//查询数据表中主键ID数据集
var lsitModular = myModels.JD_Modular.Select(m => m.ModularID).ToList();//查询数据表中主键ID数据集
foreach (short item in lsitModular)//JD_OpType表的数据集 item是lsitOptype中数据的主键ID
{
foreach (short i in lsitOpType)//当上个foreach进行执行时,将遍历循环lsitOpType中的数据 进行有选择性新增
{
total++;//记录所有循环的次数
var listold = myModels.JD_ModularDetail.Where(m => m.ModularID == item && m.OpTypeID == i).Count();//判断数据表中是否有已存在数据,如果有重复则将返回大于0的参数
if (listold == 0)//必须数据表中没有相关数据,才能执行新增
{
JD_ModularDetail list = new JD_ModularDetail();
list.OpTypeID = i;
list.ModularID = item;
myModels.JD_ModularDetail.Add(list);
}
else
{
num++;//记录已存在的数据条数
}
}
}
myModels.SaveChanges();
retentJson.State = true;
retentJson.Text = "新增成功!" + (total - num) + "条数据,其中有" + num + "条数据已在权限明细!";
}
catch (Exception e)
{
Console.WriteLine(e);//打印错误说明
retentJson.State = false;
retentJson.Text = "失败!";
}
return Json(retentJson, JsonRequestBehavior.AllowGet);
}
//创建类存储返回页面关键关键属性
public class ReturnJsonVo {
public bool State { get; set; }
public string Text { get; set; }
}
总结
我用了两个foreach来完成批量新增功能,可以快速新增数据,避免单条新增数据,节约程序员宝贵的时间。但要谨记其新增数据对数据的判断,避免数据表中新增无用的数据,导致数据库冗余。
由于第一次发表有许多不懂,未能准确的对文章进行描述,欢迎留言提出文章的存在的为题。