c#列表对象分配问题中按值分配自定义列表内存分配 objTempList=objParentList; foreach(对象模板列表中的变量项) { objChildList=objList.AsQueryable() .Where(x=>x.。\u parentId==item.filedbid) .ToList(); if(objChildList!=null) { foreach(对象childlist中的变量child) { objParentList.Add(子级); } } }
上面是我的代码,问题是c#列表对象分配问题中按值分配自定义列表内存分配 objTempList=objParentList; foreach(对象模板列表中的变量项) { objChildList=objList.AsQueryable() .Where(x=>x.。\u parentId==item.filedbid) .ToList(); if(objChildList!=null) { foreach(对象childlist中的变量child) { objParentList.Add(子级); } } },c#,list,object,tolist,C#,List,Object,Tolist,上面是我的代码,问题是objTempList=objParentList objParentList有10行分配给objTempList 现在,在下一步中,当我执行foreach并在objParentList中添加更多行时,它会自动反映在列表objTempList中,我的循环会给出错误消息 您应该分开列表实例以避免此错误 objTempList = objParentList; foreach (var item in objTempList) { objChildList = objL
objTempList=objParentList
objParentList
有10行分配给objTempList
现在,在下一步中,当我执行
foreach
并在objParentList
中添加更多行时,它会自动反映在列表objTempList
中,我的循环会给出错误消息 您应该分开列表实例以避免此错误
objTempList = objParentList;
foreach (var item in objTempList)
{
objChildList = objList.AsQueryable()
.Where(x => x._parentId == item.filedbid)
.ToList<FileObjectView>();
if (objChildList != null)
{
foreach (var child in objChildList)
{
objParentList.Add(child);
}
}
}
如果要将
objParentList
的内容分配给objTempList
而不在foreach循环中无意地修改objTempList
,则需要创建objParentList
的新实例并将其分配给objTempList
这样,将列表项添加到循环内部的父列表不会引发异常,因为您将原始列表的副本分配给了objTempList
,而不是引用。例如:
objTempList = objParentList.ToList();
foreach (var item in objTempList)
{
objChildList = objList.AsQueryable().Where(x => x._parentId == item.filedbid).ToList();
foreach (var child in objChildList)
objParentList.Add(child);
}
objTempList=新列表(objParentList);
在问题中发布代码时,请使用代码格式。您已经给了objTempList
一个对objParentList
的引用,父列表得到的任何东西,临时列表也会得到。您得到的具体错误是什么?了解以下信息会很有用……错误是在遍历集合时修改集合是无效的操作。由于objTempList和objParentList是问题代码中的同一个对象,因此在迭代objParentList时无法将对象添加到objParentList。InvalidoOperationException。在原始版本中,objTempList被修改,因为它是与objParentList相同的引用。是的,它是相同的引用,但是如何分配两个没有引用的列表对象?我没有在任何地方使用关键字ref,那么为什么它的引用父实例?是否希望在枚举完成后objParentList中的更改反映在objTempList中?
objTempList = new List<T>(objParentList);