Linq语法相互转换

var query = subTaskQuery
          .Join(configQuery, st => st.Status, c => c.Id, (st, c) => new { st, c }).DefaultIfEmpty()
          .Join(routineTaskQuery, join => join.st.ParentRoutineTaskID, rt => rt.Id, (join, rt) => new { join.st, join.c, rt }).DefaultIfEmpty()
          .Join(taskTypeQuery, join => join.rt.TaskType, tt => tt.Id, (join, tt) => new { join.st, join.c, join.rt, tt }).DefaultIfEmpty()
          .Join(routineTaskQuery, join => join.st.UnionRoutineTaskID, rtt => rtt.Id, (join, rtt) => new { join.st, join.c, join.rt, join.tt, rtt }).DefaultIfEmpty()
          .Join(taskTypeQuery, join => join.rtt.TaskType, ttp => ttp.Id, (join, ttp) => new { join.st, join.c, join.rt, join.tt, join.rtt, ttp }).DefaultIfEmpty()
          .Select(join => new TKSuperQueryTableDto()
          {
              Id = join.st.Id,
              PeriodId = join.rtt.PeriodID,
              ParentTaskCode = join.rt.Code,
              ParentTaskTypeId = join.tt.Id,
              ParentTaskName = join.tt.TaskTypeName,
              ParentTaskResponsibleId = join.rt.Responsible,
              UnionTaskCode = join.rtt.Code,
              UnionTaskTypeId = join.ttp.Id,
              UnionTaskName = join.ttp.TaskTypeName,
              UnionTaskResponsibleId = join.rtt.Responsible,
              TaskStatusId = join.c.Id,
              TaskStatus = join.c.EnDec,
              CreateDate = join.st.CreationTime,
              LastUpdateDate = join.st.LastModificationTime,
              StartDate = join.st.StartDate,
              EndDate = join.st.EndDate,
              DeadLine = join.st.DeadLine,
              CreatorId = join.st.CreatorId,
              ResponsibleId = join.st.UserID,
          });
var query = from st in subTaskQuery
            join c in configQuery
            on st.Status equals c.Id into cJoin
            from c in cJoin.DefaultIfEmpty()
            join rt in routineTaskQuery
            on st.ParentRoutineTaskID equals rt.Id into rtJoin
            from rt in rtJoin.DefaultIfEmpty()
            join tt in taskTypeQuery
            on rt.TaskType equals tt.Id into ttJoin
            from tt in ttJoin.DefaultIfEmpty()
            join rtt in routineTaskQuery
            on st.UnionRoutineTaskID equals rtt.Id into rttJoin
            from rtt in rttJoin.DefaultIfEmpty()
            join ttp in taskTypeQuery
            on rtt.TaskType equals ttp.Id into ttpJoin
            from ttp in ttpJoin.DefaultIfEmpty()
            select new TKSuperQueryTableDto()
            {
                Id = st.Id,
                PeriodId = rtt.PeriodID,
                ParentTaskCode = rt.Code,
                ParentTaskTypeId = tt.Id,
                ParentTaskName = tt.TaskTypeName,
                ParentTaskResponsibleId = rt.Responsible,
                UnionTaskCode = rtt.Code,
                UnionTaskTypeId = ttp.Id,
                UnionTaskName = ttp.TaskTypeName,
                UnionTaskResponsibleId = rtt.Responsible,
                TaskStatusId = c.Id,
                TaskStatus = c.EnDec,
                CreateDate = st.CreationTime,
                LastUpdateDate = st.LastModificationTime,
                StartDate = st.StartDate,
                EndDate = st.EndDate,
                DeadLine = st.DeadLine,
                CreatorId = st.CreatorId,
                ResponsibleId = st.UserID,
            };

posted on   糯米白白  阅读(48)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示