【发布时间】:2012-04-29 05:21:41
【问题描述】:
我的一个 LINQ 查询出现问题,因此我在 LINQPad 中制作了它的简化版本来帮助我。问题是,我不明白为什么它仍然没有做我认为应该做的事情......
var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
x == "3"
&& true);
result.Dump();
这会回馈3,就像人们假设的那样。
但是,当我运行它时:
var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
x == "3"
&& false ? false : true);
我收到1 回复。最后一行是实际代码的简化。这两个示例都应该在最后一行给出true,这将返回3,但是带有条件运算符的查询在那里抛出了一个扭结。
我错过了什么?
【问题讨论】:
-
+1:在最初阅读这个问题时,我皱起眉头想知道,“我错过了什么?为什么你会期望从第二个例子中得到 1?
x == "3" && false总是评估为 false ...” 不考虑运算符优先级可能会双向。
标签: c# linq conditional conditional-operator