c# - 列表在 foreach 循环中复制列表项中的相同数据
问题描述
我正在循环通过一组 XML 节点,我试图将结果保存到一个列表<>(XML 中有两个项目),但在第二个循环中,两个列表项都是相同的,所以它正在复制最后一个将数据读取到两个列表。
//Test Node Details - If not passed
if (record.PCBResult != "Passed")
{
TestResultsModel testRecord = new TestResultsModel();
record.TestResults = new List<TestResultsModel>();
foreach (XElement element in xmlDoc.Descendants("Test"))
{
testRecord.TestName = element.Attribute("Name").Value;
testRecord.TestType = element.Attribute("Type").Value;
testRecord.TestItemNumber = element.Attribute("Itemnumber").Value;
testRecord.TestSide = element.Attribute("Side").Value;
testRecord.TestResult = element.Attribute("Result").Value;
testRecord.TestFailure = element.Attribute("Failure").Value;
testRecord.TestAoiFailure = element.Attribute("AOIFailure").Value;
record.TestResults.Add(testRecord);
}
}
我认为 record.TestResults.Add 会将集合添加到列表中,然后在 foreach 循环的第二次迭代中将新集合添加到第二个列表中。我做错了什么?对不起,我是新手。
解决方案
我认为您的 testRecord 变量范围不行。“record.TestResults.Add”不是复制你的对象而是一个引用,当你更新你的对象时,它会在列表中更新,你必须将它放在循环中为每次迭代创建一个新对象,尝试这样的事情:
if (record.PCBResult != "Passed")
{
record.TestResults = new List<TestResultsModel>();
foreach (XElement element in xmlDoc.Descendants("Test"))
{
TestResultsModel testRecord = new TestResultsModel();
testRecord.TestName = element.Attribute("Name").Value;
testRecord.TestType = element.Attribute("Type").Value;
testRecord.TestItemNumber = element.Attribute("Itemnumber").Value;
testRecord.TestSide = element.Attribute("Side").Value;
testRecord.TestResult = element.Attribute("Result").Value;
testRecord.TestFailure = element.Attribute("Failure").Value;
testRecord.TestAoiFailure = element.Attribute("AOIFailure").Value;
record.TestResults.Add(testRecord);
}
}
有关更多详细信息,请参阅该帖子:list.add 似乎正在添加对原始对象的引用?
推荐阅读
- r - 根据有关其名称的条件重命名列
- android - Alloy.js 中的全局变量
- android - 上一个条目使用自定义保存方法覆盖旧条目
- sql - #1235 - 此版本的 MariaDB 尚不支持 MySQL 中的“LIMIT & IN/ALL/ANY/SOME 子查询”
- python-3.x - 连接多个字符串时,python为什么要加括号?
- angular - 如何从Angular中的对象数组中显示正确元素的属性
- javascript - SQLITE_MISUSE:错误的参数或其他 API 滥用
- go - How to idiomatically fill empty fields with default values for Kubernetes API objects?
- python - TypeError:在底图中绘制颜色图时,输入类型不支持 ufunc 'sqrt'
- slack - 没有外部服务的 slack 上的交互式消息