【发布时间】:2026-01-12 09:30:01
【问题描述】:
有什么建议可以让下面的查询更“可读”吗?
var result = result
.OrderBy(a =>
(conditionA) ?
valueA :
(conditionB ? valueB :
(conditionC ?
(conditionD ?
valueC : valueD) :
valueE)));
条件和值的长代码难以阅读。
【问题讨论】:
-
添加适当的缩进并将冒号
:与其对应的questino标记?对齐 -
ternary-operator: "三元运算符是 any 运算符,它接受三个参数。对于三元条件运算符
?...:,请使用[tag:conditional-operator]。” (我的重点) -
更好的是删除所有条件。您在代码中添加
OrderBy和ThenBy语句,它们只是函数。如果要动态指定排序字段,可以在 LINQ 中轻松完成 -
视情况而定。对于简单的条件,我只需重新对齐代码。对于复杂的条件,我会考虑提取一个委托
-
实际上,@PanagiotisKanavos,无法使用
OrderBy/ThenBy链实现此效果,因为根据条件,比较可能最终将left.valueA与right.valueC或任何其他进行比较组合。