问题描述
fromainGet<T_SALARY_PERSON>()joinbinGet<T_SALARY_INFO>()ona.INFO_IDequalsb.IDintogfromgcing.DefaultIfEmpty()letd=gc.SALARY_TOTALwheregc.PAY_TYPE==falseletf=gc.SALARY_TOTALwheregc.PAY_TYPE==true请问这样写可以吗?为什么?
解决方案
解决方案二:
gc有可能为null,应该在let中做判断。例如写letd=gc==null?.....:gc.SALARY_TOTAL
解决方案三:
嗯,可能上述的......在你的业务上,应该填写为0。你按照“左外连结”业务概念设计一下也就能想到,当发工资时如果一个人没有工资,那么工资表上应该给什么默认值呢?或者,从业角度去考虑一下,这有必要使用外连接运算吗?(当一个人没有工资信息时,应该做“0元”工资表吗?)
解决方案四:
为什么去掉一个letd=gc.SALARY_TOTALwheregc.PAY_TYPE==false就会有结果但是我也需要另一个变量letd=gc.SALARY_TOTALwheregc.PAY_TYPE==true添上后没有结果,是不是有冲突?
解决方案五:
你用的是leftjoin,所以gc有可能是null
解决方案六:
fromainGet<T_SALARY_INFO>()joinbinGet<T_SALARY_PERSON>()ona.IDequalsb.INFO_IDletd=a==null?0:a.SALARY_TOTALwherea.PAY_TYPE==falseletf=a==null?0:a.SALARY_TOTALwherea.PAY_TYPE==true为什么我这样写还是没有结果
解决方案七:
即便是null但我已经判断了啊,应该显示0才对的啊。
解决方案八:
wherea.PAY_TYPE==false和wherea.PAY_TYPE==true会有冲突吗?