Я хотел бы изменить порядок результатов рекурсивного поиска в таблице собственных ссылок. Код в конце.
Данные отображаются правильно, но в желаемом выводе я хочу построить как древовидное представление. Когда показывается элемент PROD_NO, получите все элементы из ROUT_NO, содержащие PROD_NO, и поместите его в.
Получить все предметы для начальной точки 0077976.
Выход:
ID NAME PER_ROUTER PROD_NO ROUT_NO SEQ TYPE
POCKET, LONG LEFT - WELD 1.00000 0066772 0077976 1 4
21202 C.5LG6 PANDUIT COVERS GRAY x 6 PIEDS 2.00000 0077976 1 2
1.00000 0081253 0077976 1 4
1.00000 0081235 0077976 1 4
41978 BOITE POCKET BIN LONG 33 x 15 x 12 DOUBLE PLY 1.00000 0077976 1 2
41979 PALETTE POCKET BIN (48 x 36 HT) 0.06666 0077976 1 2
PULLEY DRIVE 1.00000 0067907 0077976 1 4
20322 HAT6-90018-C50 (HAT6-9G018) BOWE GREY TEXTURE (Kg) 0.15000 0066772 2 2
POCKET, LONG LEFT - TRAY+BEND 1.00000 0066773 0066772 1 4
BRACKET SUPPORT, LONG LH 2.00000 0066774 0066772 1 4
BRACKET, REEL SUPPORT, LH 1.00000 0066775 0066772 1 4
BRACKET, ROD SUPPORT, LH 1.00000 0066776 0066772 1 4
BRACKET, LATCH, PCKT BIN, LG 1.00000 0066777 0066772 1 4
HANDLE, POCKET, LH 1.00000 0066778 0066772 1 4
PLATE, POCKET BIN, ALL 1.00000 0066779 0066772 1 4
CUP, POCKET BIN, ALL 4.00000 0066780 0066772 1 4
PLATE, POCKET BIN, ALL 1.00000 0066781 0066772 1 4
CABLE HOOK, PCKT BIN, LONG (1/LG) 2.00000 0066782 0066772 1 4
29750 PHMS M3 X 16 PHIL ZC VIS/SCREW 4.00000 0066772 1 2
00008 CRS SHEET 16G (0.060) 1.00000 0066773 1 1
01733 S-M4-2 2.00000 0066773 5 2
Желаемый вывод - организовать все строки ROUT_NO в PROD_NO
Пример
ID NAME PER_ROUTER PROD_NO ROUT_NO SEQ TYPE
POCKET, LONG LEFT - WELD 1.00000 0066772 0077976 1 4
20322 HAT6-90018-C50 (HAT6-9G018) BOWE GREY TEXTURE (Kg) 0.15000 0066772 2 2
POCKET, LONG LEFT - TRAY+BEND 1.00000 0066773 0066772 1 4
00008 CRS SHEET 16G (0.060) 1.00000 0066773 1 1
01733 S-M4-2 2.00000 0066773 5 2
BRACKET SUPPORT, LONG LH 2.00000 0066774 0066772 1 4
lines of 0066774
lines of 0066774
lines of 0066774
BRACKET, REEL SUPPORT, LH 1.00000 0066775 0066772 1 4
lines of 0066775
lines of 0066775
lines of 0066775
BRACKET, ROD SUPPORT, LH 1.00000 0066776 0066772 1 4
lines of 0066776
lines of 0066776
lines of 0066776
BRACKET, LATCH, PCKT BIN, LG 1.00000 0066777 0066772 1 4
HANDLE, POCKET, LH 1.00000 0066778 0066772 1 4
PLATE, POCKET BIN, ALL 1.00000 0066779 0066772 1 4
CUP, POCKET BIN, ALL 4.00000 0066780 0066772 1 4
PLATE, POCKET BIN, ALL 1.00000 0066781 0066772 1 4
CABLE HOOK, PCKT BIN, LONG (1/LG) 2.00000 0066782 0066772 1 4
29750 PHMS M3 X 16 PHIL ZC VIS/SCREW 4.00000 0066772 1 2
21202 C.5LG6 PANDUIT COVERS GRAY x 6 PIEDS 2.00000 0077976 1 2
1.00000 0081253 0077976 1 4
1.00000 0081235 0077976 1 4
41978 BOITE POCKET BIN LONG 33 x 15 x 12 DOUBLE PLY 1.00000 0077976 1 2
41979 PALETTE POCKET BIN (48 x 36 HT) 0.06666 0077976 1 2
PULLEY DRIVE 1.00000 0067907 0077976 1 4
Код для рекурсивного поиска:
private void ParseTableRecursive(string parent)
{
if (parent.Trim().Length != 0)
{
List<DataRow> routerbills = dt_routerData.AsEnumerable().Where(x => x.Field<string>("Rout_No").ToString() == parent).ToList();
foreach (DataRow row in routerbills)
{
rec_dt_routerData.Rows.Add(new object[] {
row.Field<String>("id") == null ? "NULL" : row.Field<String>("Id").ToString(),
row.Field<String>("Name") == null ? "NULL" : row.Field<String>("Name").ToString(),
row.Field<Decimal>("per_router").ToString(), // == 0 ? "NULL" : row.Field<double>("Id").ToString(),
row.Field<String>("prod_no") == null ? "NULL" : row.Field<String>("prod_no").ToString(),
row.Field<String>("rout_no") == null ? "NULL" : row.Field<String>("rout_no").ToString(),
row.Field<String>("seq") == null ? "NULL" : row.Field<String>("Seq").ToString(),
row.Field<String>("type") == null ? "NULL" : row.Field<String>("Type").ToString(),
});
}
foreach (string child in routerbills.Select(x => x.Field<string>("Prod_No")).Distinct())
{
ParseTableRecursive(child);
}
}
}
Надеюсь, я описал шаблон, который искал. Это можно сделать внутри рекурсивного метода? или требуется для создания пустой таблицы данных для выполнения новой сортировки после рекурсивного метода.