private static void salvaComponentiRicorsivo(DataRow[] root, ArticoliDS ds, ArticoliBusiness bArticolo) { // DataRow[] root = ds.COMPONENTI.Where(x => x.IsIDPADRENull()).ToArray(); bArticolo.UpdateComponentiTable(ds.COMPONENTI.TableName, root); foreach (DataRow riga in root) { int idPadre = riga.Field <int>("IDCOMPONENTE"); DataRow[] altriNodi = ds.COMPONENTI.Where(x => !x.IsIDPADRENull() && x.IDPADRE == idPadre).ToArray(); if (altriNodi.Length > 0) { salvaComponentiRicorsivo(altriNodi, ds, bArticolo); } } }