.NETディレクトリ構造

 ディレクトリエンティティフレームワークの従来の数

1      パブリック クラスzTree
 2      {
 3          ///  <まとめ> 
4          /// ツリー制御ノードエンティティ
 。5          ///  </要約> 
。6  
。7              ///  <まとめ> 
8              /// 識別子
 。9              ///  </要約> 
10              パブリック 文字列 ID { GETSETを;}
 11  
12である             ///  <まとめ> 
13である             /// タイトル
 14              ///  </要約> 
15              公共の 文字列名{ GETセット; }
 16              公共 ブール {オープン得ますセット; }
 17              パブリック 文字列型{ 得ますセット; }
 18              ///  <要約> 
19              /// 子节点
 20              ///  </要約> 
21              公衆リスト<Ztree>子供= 新しいリスト<Ztree> ();
22      }

1データが異なる場合、私はここにいたときに、2つのnon'llが同じデータ登録を示すように使用される方法のおかげで、各クラスは、同じではありません

 

1.0すべてのデータ構造は、我々はゆっくりとスプライスするサイクルの方法を使用することができ、時間の異なる種類を持っています

1本の    一覧<Ztree> createZtreeNode(一覧<地域>領域、リスト<機器>楽器、リスト<センサー> センサ)
 2          {
 3              一覧<Ztree> Ztreeone = 新しいリスト<Ztree> ();
4              Ztree Ztreeonen = 新しいZtree()。
5              Ztreeonen.id = " 0 " 6              Ztreeonen.name = " 全部" 7              リスト<Ztree> Ztrees = 新しいリスト<Ztree> ();
             領域)
 9              {
 10                  Ztree Ztree = 新しいZtree()。
11                  Ztree.id = a.id.ToString()。
12                  Ztree.name = a.Name。
13                  Ztreeonen.open = 14                  Ztrees.Add(Ztree)。
15                  Ztreeonen.children.Add(Ztree)。
16              }
 17           
18              foreachのVARの T Ztrees)
 19              {
 20                  VAR結果= instruments.Where(X => x.AreaId.ToString()== t.id).ToList();
21                  foreachのVARの解像度における結果)
 22                  {
 23                      Ztree Ztree = 新しいZtree()。
24                      Ztree.id = t.id + " " + res.Id。// 判断级数并绑定同上25                      Ztree.name = res.Number。
26 VaRの SENS = sensors.Where(X => x.InstrumentId == res.Id).ToList();
27 foreachののvarSENS)

                                          28                      {
 29                          zTree TR = 新しい新しいzTree();
 30                          tr.id = Ztree.id + " " + s.Id; // Serieses及びId結合31がある                          tr.name = s.Number;
 32 33である                        Ztree.children .add(TR)、
 34である                    }
 35                      Ztreeonen.open = trueに36                     t.children.Add(zTree);
 37                 }
 38である            }
 39 40
                         
      
             Ztreeone.Add(Ztreeonen)。
41              VaRの ABB = JsonConvert.SerializeObject(Ztreeone)。
42              リターンZtreeone。
43          }

 

2.0それは徐々にバイナリツリーの再帰的トラバーサルを挿入されたデータを使用する方法は、のようなビットを形成します

 

1本の     一覧<ツリー> CreateZtreeNode(INTはPid、リスト<カテゴリー> createZtreeNode)
 2          {
 3              一覧<ツリー>木= 新しいリスト<ツリー> ();
4              VARチャイルズ= createZtreeNode.Where(D => d.SuperiorDepartmentsId ==はPid && d.Deleted =!)。
5              のforeachVAR Depar チャイルズ)
 6              {
 7                  VARのツリー= 新しいツリー()。
8                  VARの newrelationship = 新しい_relationship()。
9                 tree.id = Depar.DepartmentId。
10                  tree.name = Depar.DepartmentName + " <スパンのスタイル= '表示:なし;'> * " + Depar.DepartmentId + " * </ span>の" ; // 添加名、在后面加上标识
11                  試みる
12                  {
 13                      tree.title = db.Users.Where(X => x.Id == 。Depar.PartOwner).FirstOrDefault()ユーザ名を、
14                  }
 15                  キャッチ(例外)
 16                  {
 17                      tree.title = "" ;
18                 }
 19                  newrelationship.children_num = createZtreeNode.Where(!X => x.SuperiorDepartmentsId == Depar.DepartmentId && x.Deleted = ).Count(); // 下属部门
20                  newrelationship.parent_num = Depar.SuperiorDepartmentsId。
21                  newrelationship.sibling_num = createZtreeNode.Where(!X => x.SuperiorDepartmentsId == Depar.SuperiorDepartmentsId && x.Deleted = ).Count() - 1 ;
22                  tree.relationship.Add(newrelationship)。
23                  tree.children = CreateZtreeNode(tree.id、createZtreeNode)。
24                  もし(tree.relationship.Countの== 0 25                  {
 26                      tree.relationship = NULL ;
27                  }
 28                  trees.Add(木)
29              }
 30本の             リターン木。
31          }

動作上の再帰的及び2.1は若干のファイルに類似しています

1つの    プライベート 静的リスト<DirectoryInfo>でGetChild(一覧<DirectoryInfo> directoryList、DirectoryInfo directoryCurrent)
 2          {
 3              VAR childArray = directoryCurrent.GetDirectories()。
4              もし(childArray!= NULL && childArray.Length> 0 5              directoryList.AddRange(childArray)。
6              のforeachVARのchildArray)
 7              {
 8                  でGetChild(directoryList、子)。
9              }
 10              リターンdirectoryList;
11          }

一般的な考え方を以下に示す(一定最初のトラバーサルサブセットノウハウこれまでに見つかったことができません)

 

おすすめ

転載: www.cnblogs.com/YZM97/p/11763756.html