Linq:通过检查(不是Id)但其他多个'将不存在的itemList添加到数据库。性能

时间:2015-09-11 10:32:35

标签: c# linq

我可以通过检查Ids是否已存在来向数据库添加缺失列表:

var newIDs = ObjsList.Select(a => a.Id).ToList();
var existingDBObjs = db.Objs.Where(r => newIDs.Contains(r.ObjsId)).ToList();
var missingOrNewObjs = newsList.Where(r => !existingDBObjs.Select(c => c.ObjsId).Equals(r.ObjsId)).ToList();
db.Objs.AddRange(missingOrNewObjs);

但是如何通过检查(不是Id)而不是其他多个'来将不存在的项目添加到数据库?属性(使用最小数据库调用)?

e.g。仅当关系表中不存在子ID和父ID时才将关系行添加到db

1 个答案:

答案 0 :(得分:1)

您可以使用匿名类型。我还建议使用Join

var missingOrNewObjs = from newobj in ObjsList
                       join existing in db.Objs
                       on new { newobj.Name, newobj.Number, newobj.Address }
                       equals new { existing.Name, existing.Number, existing.Address } into grpJoin
                       from outerjoin in grpJoin.DefaultIfEmpty()
                       where outerjoin == null
                       select newobj;
db.Objs.AddRange(missingOrNewObjs);