.NET 4.x Генерация дерева на основе дерева! - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток всем! Суть: Есть в MSSQL БД, импортированная из dbf Clipper dBASE IV В таблице хранится спецификации изделия. Все, огромное количество полей. Нужно составить дерево 1 выбранной спецификации. Структура таблиц простая - Куда входит, что входит. НО поле КУДА не уникально, и просто построить иерархию у меня не получается. Через пень колоду у меня получилось извратно пребразовать всё это в дерево. Но грузиццо по 10 минут. Я бы очень хотел преобразовать это безобразие в нормальную таблицу. Но к сожалению пошел уже 3ий день.... Главная проблема в логике преобразования дополнительных полей. В общем, если WP = 0 - это изначальная спека и менять ничего не требуется. (Все модификаторы применяются в последовательности к комплектам и нужным модификатором строки можно считать последний) WP = 1 - Заменяем SD, WP = 2 - Строка Удаляется из спеки Для построения дерева в принципе всегда известен корень - это Децималь спеки комплекта. Примерно вот так хотелось бы что бы выглядело: ID ParentID WC WA SD 1 1 УВ1077402-06 УВ1077402-06 0 2 1 УВ1077402-06 someone n
WC куда входит WA что входит SD количество SB комплект WP признак корректировки
Нормальная таблица
Листинг программы
  1. public partial class UV107740206
  2. {
  3. public int ID { get; set; }
  4. public Nullable<int> ParentID { get; set; }
  5. public string WC { get; set; }
  6. public string WA { get; set; }
  7. public Nullable<int> SD { get; set; }
  8. }
БД В SQL прикладываю. Получилось очень сумбурно, состояние без сна даёт о себе знать. Буду благодарен за любую помощь. В том числе возможно и материально...

Решение задачи: «.NET 4.x Генерация дерева на основе дерева!»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5.  
  6. namespace MigrateApp
  7. {
  8.     class Program
  9.     {
  10.         private static string StartKey = "УВ1077402-06";
  11.         static ClipperEntities dbContext = new ClipperEntities();
  12.         public static void Main(string[] args)
  13.         {
  14.             CreateTree(2);
  15.           //Console.WriteLine("{0} - {1}", row.WC, row.WA);
  16.  
  17.            
  18.             Console.ReadLine();
  19.         }
  20.  
  21.         private static void CreateTree(int id)
  22.         {
  23.             UV107740206 temp = GetRootContent(id);
  24.             List<FILE10> f10 = GetGenerateContent(temp.WA).ToList();
  25.            
  26.             foreach (FILE10 row in f10)
  27.             {
  28.                 UV107740206 newOrder = new UV107740206
  29.                 {
  30.                     ParentID = temp.ID,
  31.                     WC = row.WC,
  32.                     WA = row.WA,
  33.                     SD = row.SD,
  34.                     SB = row.SB,
  35.                     WP = row.WP
  36.                 };
  37.                 dbContext.UV107740206.Add(newOrder);
  38.                 int changes = dbContext.SaveChanges();
  39.                
  40.  
  41.                 Console.WriteLine(changes.ToString() + " changes saved!");
  42.                 CreateTree(newOrder.ID);
  43.  
  44.             }
  45.         }
  46.  
  47.  
  48.         private static UV107740206 GetRootContent(int id)
  49.         {
  50.             UV107740206 fuv = dbContext.UV107740206.First(u => u.ID == id);
  51.             return fuv;
  52.         }
  53.  
  54.         private static IQueryable<FILE10> GetGenerateContent(string wc)
  55.         {
  56.             IQueryable<FILE10> f10 = dbContext.FILE10.Where(f => f.WC == wc);
  57.  
  58.             return f10;
  59.         }
  60.        
  61.     }
  62. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы