如何使用AddRange将项目添加到现有列表

问题描述:

我试图更新记录并将更改保存到数据库,看起来我不能,因为我无法获取我的列表。对不起,如果我的问题不清楚。如何使用AddRange将项目添加到现有列表

让我知道是否有其他方式可以做到这一点。

List<ClaimHistoryModel.ClientLog> ClaimLogs = new List<ClaimHistoryModel.ClientLog>(); 
using (SidDbContext db = new SidDbContext()) 
    { 
     var oldClaim = db.Client.FirstOrDefault(x => x.ClaimId == clientModel.ClaimId); 

     oldClaim.CellNumber = clientModel.CellNumber; 

     ClaimLogs = GetClaimLog(db); //here am getting a method which update the Logtbl.(all the changes will be saved) no error on this funstion 
     //it works if i save changes here but it won't update the history table which shows the fieds before and after.    
     db.claimAudit.AddRange(ClaimLogs); Error here 
     db.SaveChanges(); 
    } 

正在此错误:

Cannot convert from System.Collections.Generic.List<ClaimHistoryModel.ClientLog> to System.Collections.Generic.IEnumerable<claimAudit>

+1

的错误似乎很清楚。您正试图将'MyModel'项的集合添加到'claimAudit'对象列表中。 –

+0

Mymodel!= claimAudit。除非'Mymodel'继承'claimAudit',否则不能这样做。 –

+0

该OP没有说什么类型,MyModel和claimAudit不存在 –

这不会有任何效果。您不能将ClientLog集合添加到期望ClaimAudit的集合中。这与尝试将类型为Order的对象添加到类型为User的对象集合时是一样的。希望我有道理......

示例下面将工作,因为db.claimAudit.AddRange()预计两件事情:

  1. IEnumerable
  2. 类型的IEnumerableClaimAudit

List<ClaimAudit>个同时满足一旦你改变List<ClaimAudit>List<ClientLog>你违反了2点,代码将打破

var claimAudits = new List<ClaimAudit>(); 
var claim1 = new ClaimAudit(); 
var claim2 = new ClaimAudit(); 
claimAudits.Add(claim1); 
claimAudits.Add(claim2); 

db.claimAudit.AddRange(claimAudits); 

也许你确实需要插入要求的日志,而不是要求审计,如果是这样的话,那么只是那些conditions.As改变这一行:

db.claimAudit.AddRange(ClaimLogs); 

这样:

db.claimLogs.AddRange(ClaimLogs);