ディレクトリエンティティフレームワークの従来の数
1 パブリック クラスzTree 2 { 3 /// <まとめ> 4 /// ツリー制御ノードエンティティ 。5 /// </要約> 。6 。7 /// <まとめ> 8 /// 識別子 。9 /// </要約> 10 パブリック 文字列 ID { GET、SETを;} 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の(のvar秒でSENS) 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 のforeach(VAR 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 のforeach(VARの子でchildArray) 7 { 8 でGetChild(directoryList、子)。 9 } 10 リターンdirectoryList; 11 }
一般的な考え方を以下に示す(一定最初のトラバーサルサブセットノウハウこれまでに見つかったことができません)