コード例 #1
0
ファイル: WebCourseStatistics.cs プロジェクト: PavelPZ/REW
 public static List<DepartmentFlat> doFlat(IEnumerable<CompanyDepartment> departments) {
   List<DepartmentFlat> result = new List<DepartmentFlat>();
   foreach (var grp in departments.GroupBy(d => d.CompanyId)) {
     var tree = dbToTree(grp.ToArray());
     var path = new Department[DepartmentFlat.maxDeep];
     ForEach(tree, 0, path, (pth, lev) => {
       DepartmentFlat res = new DepartmentFlat();
       for (int i = 0; i <= lev; i++) res.setLevel(i, pth[i].Id, pth[i].Title);
       var fakeId = pth[lev].Id;
       for (int i = lev + 1; i < DepartmentFlat.maxDeep; i++) res.setLevel(i, fakeId, null);
       result.Add(res);
     });
   }
   return result;
 }
コード例 #2
0
ファイル: WebCourseStatistics.cs プロジェクト: PavelPZ/REW
 static DepartmentFlat Clone(DepartmentFlat src, long oldId, long userId, string userTitle, int levId, string levTitle, long modId, string modTitle) {
   var its = new List<DepItem>();
   var st = 0;
   foreach (var it in src.Items) {
     switch (st) {
       case 0: its.Add(new DepItem() { Id = -it.Id, Title = it.Title }); if (it.Id == oldId) st = 1; break;
       //case 1: its.Add(new DepItem() { Id = -it.Id, Title = it.Title }); st = 2; 
       case 1: its.Add(new DepItem() { Id = userId, Title = userTitle }); st = 2; break;
       case 2: its.Add(new DepItem() { Id = levId, Title = levTitle }); st = 3; break;
       case 3: its.Add(new DepItem() { Id = modId, Title = modTitle }); st = 4; break;
       case 4: its.Add(new DepItem() { Id = modId, Title = null }); break;
     }
   }
   return new DepartmentFlat() { Items = its.ToArray() };
 }