目的は、行をDataTableの最初の位置に移動することです。そのため、行を取得したら、それを削除してから、最初の位置に挿入します。
DataRow[] dr = DataSet1.Tables[0].Select("field1 = HELLO");
DataSet2.Tables[0].Rows.Remove(dr[0]); // Here dr[0] is removed. Why?
DataSet2.Tables[0].Rows.InsertAt(dr[0], 0); // Now a null value is inserted
2行目では、値をde DataTableに削除dr[0]
し、パラメーターとして渡されたため、最初の位置に挿入できません。