我有 lambda 表达式,当输入对象和数据库对象中的所有值都相等时,我会获取记录
var matchingrecord = (from data in dbContext.TableA
where data.Id == inputDto.Id &&
data.AddTypeId == inputDto.AddressTypeId &&
inputDto.AddressLineOne == data.AddressLineOne) &&
(inputDto.AddressLineTwo == (data.AddressLineTwo ?? string.Empty)) &&
(inputDto.State ==null||(inputDto.State.stateId == data.State.StateId)) &&
(inputDto.City == data.City) &&
(inputDto.ZipCd == data.ZipCd)
select data).FirstOrDefault();
仅当 zipcodeExtn 不为空时,我才需要在 where 子句中包含另一个字段检查(zipcodeExtn)。
(inputDto.City == data.City) &&
(inputDto.ZipCd == data.ZipCd) &&
(data.zipcodeExtn!=null && inputDto.zipcodeExtn==data.zipcodeExtn) // This should be added only when zipcodeExtn is not null
请告诉我是否可以写一个语句而不是添加 if 条件。让我知道 zipcdExtn 的逻辑是否有任何替代方案
不要用“添加语句 if 条件”的方式来思考它。相反,考虑构建一个在您想要接受的情况下为 true 的布尔表达式。您是否希望该表达式在
true
的情况下计算为 inputDto.zipcodeExtn == null
,而不考虑其他因素?布尔 Or 运算符执行以下操作:inputDto.zipcodeExtn == null || (...expression)
。