?:LINQ中的条件运算符未按预期工作

Mar*_*cus 4 c# linq conditional conditional-operator

我遇到了一个LINQ查询问题,所以我在LINQPad中为它做了一个简化版本来帮助我.问题是,我不明白为什么它仍然没有做我认为应该做的事情......

var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
                    x == "3"
                    && true);
result.Dump();
Run Code Online (Sandbox Code Playgroud)

3就像人们想象的那样回馈.
但是,当我运行这个时:

var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
                    x == "3"
                    && false ? false : true);
Run Code Online (Sandbox Code Playgroud)

1回来了.最后一行是实际代码的简化.这两个例子都应该给出true最后一行,它会返回3,但是带有条件运算符的查询会在那里引发一个扭结.

我错过了什么?

Wes*_*ser 8

您的测试表达式是这样关联的:

(x == "3" && false) ? false : true
Run Code Online (Sandbox Code Playgroud)

而不是像这样:

x == "3" && (false ? false : true)
Run Code Online (Sandbox Code Playgroud)