子查询 Contains 条件解析 返回

SqlSugar
1 115

版本

SqlSugarCore(5.1.3.1)


代码

            var MixingUserCount = await _concretProductionTask.Context.Queryable<SysOrg>()
                .Where(x => x.OrgType == OrgType.MixingStation)
                .WhereIF(!input.MixingType.IsEmpty(), x => x.MixingType == input.MixingType)
                .Select(x => new MixingUserCountOutput
                {
                    MixingId = x.Id,
                    UserCount = SqlFunc.Subqueryable<SysUser>()
                    .LeftJoin<SysEmp>((a, b) => a.Id == b.Id)
                    .Where((a, b) => a.AdminType == 0)
                    .Where((a, b) => b.OrgId == SqlFunc.Subqueryable<SysOrg>().GroupBy(s => s.Id)
                        .Where(s => s.Pids.Contains(x.Id.ToString()) && x.Id != 0).Select(s => s.Id)) //s.Pids.Contains(x.Id.ToString())//解析错误
                    .Count()                                                                                       // x.Id != 0       //解析正确
                })
                .ToListAsync();

SQL 

SELECT
	`Id` AS `MixingId`,
	(
		SELECT
			COUNT(*)
		FROM
			`sys_user` `a`
		LEFT JOIN `sys_emp` `b` ON (`a`.`Id` = `b`.`Id`)
		WHERE
			`OrgId` IN (
				(
					SELECT
						`Id`
					FROM
						`sys_org`
					WHERE((
					        `Pids` LIKE concat('%', CAST(`Id` AS CHAR), '%')) -- `Id`应该为`x`.`Id`
					AND (`x`.`Id` <> 0))
					
					GROUP BY `Id`
				)
			)
		AND (`a`.`AdminType` = 0)
	) AS `UserCount`
FROM `sys_org` x

问题

    解析出的结果

(`Pids` LIKE concat('%', CAST(`Id` AS CHAR), '%')

    应该为

(`Pids` LIKE concat('%', CAST(`x`.`Id` AS CHAR), '%')


热忱回答1