EF Linq判断数据是新增,删除,还是修改
C# 全选
/// <summary>
/// 导入新的单据管理
/// </summary>
/// <returns></returns>
[HttpGet]
public GZAPIResultArray<base_DataSN> import()
{
SNDataHelper helper = new SNDataHelper();
helper.GetSNCollonection();
var snData = helper.SNModels;
var dbData = entities.base_DataSN.ToList();
// 获取新增的数据,传入数据在数据库中不存在
var newData = snData.Where(w => !dbData.Any(a => a.DocCode == w.DocCode));
// 获取删除的数据,数据库中存在,但是传入数据中没有
var delData = dbData.Where(w => !snData.Any(a => a.DocCode == w.DocCode));
var delCodes = delData.Select(s => s.DocCode).ToList();
// 执行删除
entities.base_DataSN.Where(w => delCodes.Contains(w.DocCode)).BatchDelete();
// 新增数据
List<base_DataSN> addData = new List<base_DataSN>();
foreach (var v in newData)
{
addData.Add(new base_DataSN()
{
RowID = ServerLibs.IDHelper.GetID(),
DocCode = v.DocCode,
DocName = v.DocName,
DocHeader = v.DocHeader,
DocType = v.DocType.ToString(),
Length = v.Length,
Seed = v.seed,
Separate = v.Separate,
Demo = "",
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
});
}
// 修改数据
foreach (var v in dbData.Where(w => snData.Any(a => a.DocCode == w.DocCode)))
{
var newObj = snData.Where(w => w.DocCode == v.DocCode).FirstOrDefault();
v.DocName = newObj.DocName;
v.DocHeader = newObj.DocHeader;
v.DocType = newObj.DocType.ToString();
v.Length = newObj.Length;
v.Seed = newObj.seed;
v.Separate = newObj.Separate;
v.Demo = "";
v.UpdateTime = DateTime.Now;
}
entities.SaveChanges();
entities.BulkInsert(addData);
entities.SaveChanges();
return List();
}
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生