public IList <Project> GetSublevelByParent(int year, IList <string> idList, IList <string> stateList, string prjId) { IList <PTPrjInfo> subproject = new PTPrjInfoService().GetSubproject(prjId); List <PTPrjInfo> first = new List <PTPrjInfo>(); int num = (idList.Count / 0x5dc) + 1; for (int i = 0; i < num; i++) { List <string> theIdList = idList.Skip <string>((i * 0x5dc)).Take <string>(0x5dc).ToList <string>(); List <PTPrjInfo> second = subproject.Where <PTPrjInfo>(delegate(PTPrjInfo p) { if ((!stateList.Contains(p.PrjState.ToString()) || !theIdList.Contains(p.PrjGuid.ToString().ToUpper())) || (!p.StartDate.HasValue || (p.StartDate.Value.Year > year))) { return(false); } if (p.EndDate.HasValue) { return(p.EndDate.Value.Year >= year); } return(true); }).ToList <PTPrjInfo>(); first = first.Union <PTPrjInfo>(second).ToList <PTPrjInfo>(); } IList <Project> list4 = new List <Project>(); foreach (PTPrjInfo info in first) { Project item = new Project { Id = info.PrjGuid.Value.ToString(), Text = info.PrjName, State = "open", Children = null }; list4.Add(item); } return(list4); }