再帰を使用して階層を上に行こうとしていますが、次のエラーが発生します。
Collection was modified; enumeration operation may not execute.
ここでの私の仮定は、毎回関数に入るときは同じparentRolesCopyを使用しており、異なるものではないため、2回目に入るときは、元の関数呼び出しで異なるparentRolesCopyを変更します。
どうすればこれを回避できますか?
private IEnumerable<string> GetAllParentRoles(string role)
{
// GET EACH PARENT ROLE
var parentroles = //code that gets any parents of the role passed in
//RECURSIVELY CALL THIS FUNCTION TO KEEP GETTING PARENTS OF PARENT ROLES UNTIL NONE LEFT
var parentRolesCopy = parentroles;
foreach (var parentrole in parentRolesCopy)
{
parentroles.AddRange(GetAllParentRoles(parentrole));
}
return parentroles;
}