У меня есть следующий код, который сравнивает node.Text
o каждого заданного набора узлов, а затем возвращает один, если они равны нулю в противном случае. Но моя проблема в том, что он просто сравнивает первых детей из-за nodes2.Nodes[ii]
, поэтому я знаю, что он не продвинется дальше.Как изменить эту функцию на рекурсивную функцию
Как я знаю, было ли это TreeNodeCollection
было легко сделать рекурсивный для каждого узла и подузла, используя цикл foreach
.
Но вот как я могу изменить код на рекурсивную версию? благодарим заранее!
public int Compare_ChildNodes(TreeNode nodes1, TreeNode nodes2)
{
int length_children1 = nodes1.Nodes.Count;
int length_children2 = nodes2.Nodes.Count;
int result_int = 1;
if (length_children1 != length_children2)
{
result_int = 0;
}
else
{
for (int ii = 0; ii < length_children1; ii++)
{
if (nodes1.Nodes[ii].Text.Equals(nodes2.Nodes[ii].Text))
{
int ret = Compare_ChildNodes(nodes1.Nodes[ii], nodes2.Nodes[ii]);
result_int = ret;
}
else
{
result_int = 0;
}
}
}
return result_int;
}
спасибо! но у меня есть эта ошибка: «Ошибка « System.Linq.ParallelEnumerable.OfType (System.Linq.ParallelQuery) »- это« метод », который недопустим в данном контексте» –
@SaberJalilzadeh это должно быть действительно 'System.Linq.Enumerable.OfType'. Можете ли вы проверить свои заявления 'using'? –
@SaberJalilzadeh добавил к моему ответу версию, отличную от linq. –