Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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