C# LINQ案例逻辑总是返回true,但它不应该返回true
我有下面的LINQ查询(为了简洁而编辑)当C# LINQ案例逻辑总是返回true,但它不应该返回true,c#,linq,C#,Linq,我有下面的LINQ查询(为了简洁而编辑)当终止原因既不是Any也不是NotTerminated时,应该计算终止日期范围,但它总是返回true 长时间盯着这个,会欣赏另一双眼睛。已确认数据返回预期值 var contracts = from x in yyy where aaa == bbb && …other logic… ) && (
终止原因
既不是Any
也不是NotTerminated
时,应该计算终止日期范围
,但它总是返回true
长时间盯着这个,会欣赏另一双眼睛。已确认数据返回预期值
var contracts = from x in yyy
where aaa == bbb
&& …other logic…
) && (
TerminationReason.Any == _TerminationReason ? true
: TerminationReason.NotTerminated == _TerminationReason ? t.TerminationID == null
: (
TerminationDateRange.Any == _TerminationDateRange ? true
: TerminationDateRange.PriorDayToPED == _TerminationDateRange ? t.TerminationDate.Day < PeriodEndDate.Day
: TerminationDateRange.SameDayAsPED == _TerminationDateRange ? t.TerminationDate.Day == PeriodEndDate.Day
: true
&&
TerminationReason.ForCause == _TerminationReason ? t.Reason == FOR_CAUSE
: TerminationReason.WithoutCause == _TerminationReason ? t.Reason == WITHOUT_CAUSE
: TerminationReason.Voluntary == _TerminationReason ? t.Reason == VOLUNTARY
: true
)
)
select new ContractInfo
{
...
};
var合同=从yyy中的x开始
其中aaa==bbb
&&…其他逻辑…
) && (
TerminationReason.Any==\u TerminationReason?true
:TerminationReason.NotTerminated==\u TerminationReason?t.TerminationID==null
: (
TerminationDateRange.Any==\u TerminationDateRange?真
:TerminationDateRange.PriorDayToPED==\u TerminationDateRange?t.TerminationDate.Day
如果您能给我们提供一组示例值,您希望返回false,但实际上返回true,这将非常有帮助。什么是终止原因
?它看起来同时是一个变量和一个类型。TerminationReason
由什么组成?TerminationReson。任何
都可以始终等于TerminationReason
。也许您应该先删除所有条件运算符,简化逻辑语句。把这句话写在纸上,试着看看如何简化它。现在几乎不可能阅读@PanagiotisKanavos所说的内容,我可能会更进一步,并将这些嵌套的条件语句重构为方法。这样可能更容易调试/逐步完成