elvis 运算符,又名空条件运算符,非常酷。
在 LINQ 查询中,它与空合并“??”配合使用效果很好。操作员。
Somedata.Where(dt=>(dt?.Inner?.InnerMost?.Include=="Yes")??false);
但是如果你需要转换中间值怎么办?
对于链条中的一个环节,效果很好。
Somedata.Where(dt=>(
((InnerClass)dt?.Inner)
?.InnerMost)?.Include=="Yes")
??false);
但是通过额外的必要演员表,演员表和调用被“分开”。
Somedata.Where(dt=>(
((InnerMostClass) <=== Cast
((InnerClass)dt?.Inner)
?.InnerMost)?.Include=="Yes")) <=== Use
??false);
可能在这里不止一次弄乱了括号,但我希望你明白。
虽然这个“trainwreck”调用链是一种代码味道,但有没有一种更具表现力的方式来提高简洁性和清晰度?