我有一个List,想要更新表中的两个字段。 这两个字段是使用CatId的CustOrderNumber和CustomerRefnumber 识别行。
如何根据其ID更新这两个字段,以便提高效率?
这是模型
public class Catalog
{
public Int32 CatId { get; set; }
public string Ischecked { get; set; }
public string CustOrderNumber { get; set; }
public string CustomerRefnumber { get; set; }
}
以下是处理集合的方法
public List<Catalog> WriteToDB(List<Catalog> objCat)
{
DataCollectEntities _objDataCollect = new DataCollectEntities();
foreach( var item in objcat)
{
}
}
答案 0 :(得分:0)
您需要从数据库获取传递给您的方法的项目的目录。更新每个项目的属性值并将其保存回来。
public List<Catalog> WriteToDB(List<Catalog> objCat)
{
var ids = objCat.Select(s=>s.CatId);
var db = new DataCollectEntities();
var catalogList= db.Catalogs.Where(s=>ids.Contains(s.CatId)).ToList();
foreach( var item in catalogList)
{
var c= objCat.FirstOrDefault(x=>x.CatId==item.Id);
if(c!=null)
{
item.CustomerRefnumber = c.CustomerRefnumber;
item.CustOrderNumber = c.CustOrderNumber ;
}
}
db.SaveChanges();
}
执行的SQL查询数量?
1 select语句,用于从db获取目录。
N 更新语句,用于更新N
是您要更新的记录数(目录)的每条记录
因此,如果您尝试更新3个目录,此代码将达到db 1 + 3 = 4 次。