为什么逻辑评估不会在 fist "false" 结果上停止?

Why logical evaluation is not stopped on fist "false" result?

testExceptions 是词典。

var testConfigurations = cells.SelectMany(x => x.TestConfigurations).Where(
   y => y.ID == testId && 
   !testExceptions[index].ContainsKey(y.Cell) && 
   !testExceptions[index][y.Cell].Contains(y.ID)
).ToList();
testExceptions 不包含键 y.Cell 时,

!testExceptions[index][y.Cell].Contains(y.ID) 给我一个例外。但是因为我正在检查 ContainsKey 我预计它不会评估最后一个条件。有没有什么方法可以在不使用长 if/else 语句的情况下避免异常?

您正在检查它是否包含密钥。您需要检查它是否 包含密钥:

testExceptions[index].ContainsKey(y.Cell) && ... use the key ...