/// <summary> /// 递归查找前工序,直到找到没有跳序的前工序 /// </summary> /// <param name="process"></param> /// <returns></returns> private async Task<List<string>> HasReportedWorkAsync(List<WorkOrderProcedureEntity> proceduList) { if (proceduList.Count <= 0) return new List<string>(); //前工序ID var pId = proceduList.Select(x => x.PreNid).ToList(); //查询前工序任务 var preWOProList = await BaseDal.Db.Queryable<WorkOrderProcedureEntity>().Where(p => p.WorkorderId == proceduList[0].WorkorderId && p.IsDelete == 0 && pId.Contains(p.OperationNo)).ToListAsync(); if (preWOProList.Count <= 0) return new List<string>(); //查询未跳序的工序 var isFlagSkip = preWOProList.Where(x => x.SkipOperation == 0).ToList(); //没有未跳序并且有前序时 if (isFlagSkip.Count <= 0 && preWOProList.Count > 0) { //没有未跳序的工序,则继续往上工序找 return await HasReportedWorkAsync(preWOProList); } else { //存在没有跳序的工序,则直接返回 return preWOProList.Select(x => x.Nid).ToList(); } }
标签:Count,工序,递归,C#,preWOProList,proceduList,查找,跳序,var From: https://www.cnblogs.com/sssyyds/p/18421179