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