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

C# 如何使用AddRange将项目添加到现有列表,c#,asp.net-mvc,addrange,C#,Asp.net Mvc,Addrange,我正在尝试更新记录并将更改保存到数据库中,但似乎我不能,因为我无法获取我的列表。对不起,我的问题不清楚 如果有其他方法,请告诉我 List<ClaimHistoryModel.ClientLog> ClaimLogs = new List<ClaimHistoryModel.ClientLog>(); using (SidDbContext db = new SidDbContext()) { var oldClaim = db.Client

我正在尝试更新记录并将更改保存到数据库中,但似乎我不能,因为我无法获取我的列表。对不起,我的问题不清楚

如果有其他方法,请告诉我

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();
    }
List ClaimLogs=new List();
使用(SidDbContext db=new SidDbContext())
{
var oldClaim=db.Client.FirstOrDefault(x=>x.ClaimId==clientModel.ClaimId);
oldClaim.CellNumber=clientModel.CellNumber;
ClaimLogs=GetClaimLog(db);//这里我得到了一个更新Logtbl的方法。(所有更改都将被保存)此函数没有错误
//如果我在这里保存更改,它可以工作,但是它不会更新历史记录表,该表显示了FIED前后的数据。
db.claimerudit.AddRange(ClaimLogs);此处出错
db.SaveChanges();
}
我收到这个错误:

无法从
System.Collections.Generic.List
转换为
System.Collections.Generic.IEnumerable


那是行不通的。您不能将
ClientLog
集合添加到需要
claimerudit
的集合中。这与尝试将Order类型的对象添加到User类型的对象集合中是一样的。我希望我说得通

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

  • 一个
    IEnumerable
  • 类型为索赔人的
    IEnumerable
  • List
    同时满足这两个条件。只要您将
    List
    更改为
    List
    ,您就违反了第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.claimLogs.AddRange(ClaimLogs);
    

    错误似乎很明显。您正在尝试将
    MyModel
    项的集合添加到
    claimerudit
    对象列表中。MyModel!=索赔人。除非
    Mymodel
    继承
    claimerudit
    ,否则不能这样做。OP没有说明类型是什么,Mymodel和claimerudit不存在。我修复了格式,现在可以看到不同的类型…嗯。
    列表从哪里来?我看到
    列出索赔日志
    。另外,
    IEnumerable
    来自哪里?代码中没有任何东西表明类型就是这样的。如果您正在编辑,请不要添加不存在的信息。
    db.claimLogs.AddRange(ClaimLogs);