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

时间:2016-06-13 13:18:44

标签: c# asp.net-mvc 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();
    }

我收到此错误:

  

无法从System.Collections.Generic.List<ClaimHistoryModel.ClientLog>转换为System.Collections.Generic.IEnumerable<claimAudit>

1 个答案:

答案 0 :(得分:0)

那永远不会奏效。您无法将ClientLog集合添加到期望ClaimAudit的集合中。这与尝试将类型为Order的对象添加到User类型的对象集合相同。我希望我&# 39;有意义......

以下示例将起作用,因为db.claimAudit.AddRange()需要两件事:

  1. IEnumerable
  2. IEnumerable
  3. 类型的ClaimAudit

    并且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);
    

    也许您确实需要插入声明日志而不是声明审核,如果是这种情况,则只需更改此行:

    db.claimAudit.AddRange(ClaimLogs);
    

    到此:

    db.claimLogs.AddRange(ClaimLogs);