c# – 如何在Foreach循环中更新IList中的记录?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何在Foreach循环中更新IList中的记录?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1649字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何在Foreach循环中更新IList中的记录?](/upload/InfoBanner/zyjiaocheng/769/2ecf724af6af427c8ac169ce3b76e026.jpg)
我的控制器正在通过一个列表,然后我需要循环并更新数据库中列表中的每个记录.我正在使用ASP.NET MVC和使用Linq to Sql的存储库模式.下面的代码是我的save方法,它需要将记录添加到发票表中,然后从db更新作业表中的适用作业.
public void SaveInvoice(Invoice invoice, IList<InvoiceJob> invoiceJobs)
{
invoiceTable.InsertOnSubmit(invoice);
invoiceTable.Context.SubmitChanges();
foreach (InvoiceJob j in invoiceJobs)
{
var jobUpdate = invoiceJobTable.Where(x => x.JobID == j.JobID).Single();
jobUpdate.InvoiceRef = invoice.InvoiceID.ToString();
invoiceJobTable.GetOriginalEntityState(jobUpdate);
invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues, jobUpdate);
invoiceJobTable.Context.SubmitChanges();
}
}
**我已将代码删除到问题区域.
此代码不起作用,并且没有更新作业记录,但发票表更新正常.不会抛出任何错误,invoiceJobs IList绝对不是null.如果我通过删除foreach循环并手动指定要更新哪个JobId来更改代码,它可以正常工作.以下作品:
public void SaveInvoice(Invoice invoice, IList<InvoiceJob> invoiceJobs)
{
invoiceTable.InsertOnSubmit(invoice);
invoiceTable.Context.SubmitChanges();
var jobUpdate = invoiceJobTable.Where(x => x.JobID == 10000).Single();
jobUpdate.InvoiceRef = invoice.InvoiceID.ToString();
invoiceJobTable.GetOriginalEntityState(jobUpdate);
invoiceJobTable.Context.Refresh(RefreshMode.KeepCurrentValues, jobUpdate);
invoiceJobTable.Context.SubmitChanges();
}
我根本无法让foreach循环工作.有谁知道我在这里做错了什么?
解决方法:
看起来这个问题最常见的原因是invokeJobs集合是一个空集合.也就是说它没有元素,因此foreach循环实际上没有任何作用.
您可以通过在方法顶部添加以下内容来验证这一点(仅用于调试目的)
if (invoiceJobs.Count == 0) {
throw new ArgumentException("It's an empty list");
}
内容总结
以上是互联网集市为您收集整理的c# – 如何在Foreach循环中更新IList中的记录?全部内容,希望文章能够帮你解决c# – 如何在Foreach循环中更新IList中的记录?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。