You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

List.Exists组合布尔判断始终返回false,求问题原因

问题原因分析

嘿,我来帮你把这个逻辑理清楚~你遇到的问题核心在于对List.Exists()方法的逻辑理解偏差,咱们一步步拆解:

1. Exists()方法的本质

Exists()是用来判断集合中是否存在至少一个元素,能同时满足你传入的所有条件。它不是分别检查每个条件有没有元素满足,而是要求同一个元素通过所有条件的校验。

2. 你的代码问题所在

你拆分后的两个判断:

bool existsbuy1 = pricelist.Exists(element => (element <= TPbuyRange) );
bool existsbuy2 = pricelist.Exists(element => (element >= Convert.ToDouble(JsonResP.prices[0].closeoutBid)));

这两个返回true,只能说明:

  • 集合里有元素小于等于TPbuyRange
  • 集合里也有元素大于等于closeoutBid
    但没有任何一个元素同时满足这两个条件,所以把两个条件合并到同一个Exists()里时,自然找不到符合要求的元素,返回false。

举个简单的例子:假设pricelist = [1, 6],TPbuyRange = 3,closeoutBid = 4。此时existsbuy1会因为1<=3返回true,existsbuy2会因为6>=4返回true,但没有元素同时满足<=3且>=4,所以组合后的判断就返回false。

3. 为什么existssell能正常运行?

你的这段代码:

bool existssell = pricelist.Exists(element => element >= TPsellRange & element <= Convert.ToDouble(JsonResP.prices[0].closeoutBid));

能正常返回正确结果,是因为你的集合里确实存在某个元素,同时满足>=TPsellRange和<=closeoutBid这两个条件,所以Exists()能找到符合要求的元素,返回正确的布尔值。

4. 如果你的需求是“两个条件分别有元素满足”怎么办?

如果你的实际需求是确认集合里既有满足<=TPbuyRange的元素,又有满足>=closeoutBid的元素,那直接用拆分后的两个结果做逻辑与即可:

bool existsbuy = existsbuy1 && existsbuy2;

内容的提问来源于stack exchange,提问作者Diana M00nshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:37:31