使用LINQ从数据库中的列表更新记录

时间:2018-10-22 07:36:35

标签: c# linq

我有一个List<Office>,其中模型Office包含以下内容:

int Id
string Name
int doorNumber
int officeType
int areaCode

我需要更新List<Office>的记录,其中该对象的所有areaCode元素都将更新为值10

        List<Office> OfficeList =   db.Offices.Where(x => x.officeType == 1).ToListAsync();

        listOfRecords = listOfRecords.Select(x => new Office
        {
            Id = x.Id,
            Name = x.Name,
            doorNumber= x.doorNumber,
            officeType=x.officeType,
            areaCode = 10,
        }).ToList();

        db.Offices.UpdateRange(listOfRecords);
            await db.SaveChanges();

我得到的错误是

  

Message =“无法跟踪实体类型'Office'的实例   因为另一个具有相同的{'Id'}键值的实例是   已经被追踪。附加现有实体时,请确保   仅附有具有给定键值的一个实体实例。

1 个答案:

答案 0 :(得分:0)

只需更新列表并保存更改:

List<Office> OfficeList = db.Offices.Where(x => x.officeType == 1).ToList();

OfficeList.ForEach(office => office.areaCode = 10);

db.SaveChanges();