C#Foreach继续将相同的项目添加到列表中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#Foreach继续将相同的项目添加到列表中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1792字,纯文字阅读大概需要3分钟。
内容图文
![C#Foreach继续将相同的项目添加到列表中](/upload/InfoBanner/zyjiaocheng/763/194aa5d59408451a81c7b1f46b99f774.jpg)
我的简单foreach存在问题.我试图从数据库中获取数据到我的列表.
IList<DeliveredTaskModel> deliveredTaskModel = new List<DeliveredTaskModel>();
// lines of code
if (materialUsed.Count > 0)
{
foreach (var material in materialUsed)
{
var deliveryModel = new DeliveredTaskModel();
deliveryModel.Info = materialUsed[0].SubPartCode;
deliveryModel.Description = materialUsed[0].Description;
deliveryModel.Qty = materialUsed[0].Qty;
deliveredTaskModel.Add(deliveryModel);
}
}
当我在foreach上设置断点时.我可以看到它在materialUsed中有4个不同的项目.但是,当我执行此操作时,它只是将相同项目的4倍添加到网格中.
我认为它会不断添加相同的项目,但为什么呢?有人能解释一下吗
解决方法:
您始终通过索引零访问.纠正的选项:
>如果您使用foreach使用:
foreach (var material in materialUsed)
{
var deliveryModel = new DeliveredTaskModel();
deliveryModel.Info = material.SubPartCode;
deliveryModel.Description = material.Description;
deliveryModel.Qty = material.Qty;
deliveredTaskModel.Add(deliveryModel);
}
>如果您使用索引器更改为for循环:
for(int i = 0; i < materialUsed.Count, i++)
{
var deliveryModel = new DeliveredTaskModel();
deliveryModel.Info = materialUsed[i].SubPartCode;
deliveryModel.Description = materialUsed[i].Description;
deliveryModel.Qty = materialUsed[i].Qty;
deliveredTaskModel.Add(deliveryModel);
}
>那么用户属性初始化器会更好:
foreach (var material in materialUsed)
{
deliveredTaskModel.Add(new DeliveredTaskModel
{
Info = material.SubPartCode,
Description = material.Description,
Qty = material.Qty
});
}
>然后使用linq你可以用.Select实现它
var deliveredTaskModel = materialUsed.Select(model => new DeliveredTaskModel
{
Info = material.SubPartCode,
Description = material.Description,
Qty = material.Qty
}).ToList();
我建议你选择最后一个选项:)
最后一条评论 – 你的if语句(materialUsed.Count> 0)是多余的,因为如果collection是空的,它将不会进入循环
内容总结
以上是互联网集市为您收集整理的C#Foreach继续将相同的项目添加到列表中全部内容,希望文章能够帮你解决C#Foreach继续将相同的项目添加到列表中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。