如何在含多列数据的List中使用Contains方法搜索Profit列?
解决方案
你遇到的问题是因为List<T>.Contains()默认会匹配整个T类型的实例——这里的T是值元组(double date, double profit),所以直接传入单个profit值会因为类型不匹配报错。以下是两种正确实现方式:
方法一:使用Any()方法推荐
直接检查列表中是否存在任意元素的profit等于目标值,代码简洁高效:
// 定义要搜索的目标利润值 double targetProfit = 50.0; // 判断是否存在匹配项 bool hasTargetProfit = data_good_proffit.Any(item => item.profit == targetProfit);
注意:由于double是浮点数,实际场景中建议用精度容差比较避免精度问题,例如:
bool hasTargetProfit = data_good_proffit.Any(item => Math.Abs(item.profit - targetProfit) < 1e-9 );
方法二:提取利润列后使用Contains()
先通过Select()提取所有profit值到一个新的double列表,再调用Contains():
double targetProfit = 50.0; bool hasTargetProfit = data_good_proffit .Select(item => item.profit) .Contains(targetProfit);
同样需要注意浮点数的精度问题,必要时替换为容差比较逻辑。
内容的提问来源于stack exchange,提问作者Musta Fa
相关产品推荐
相关产品推荐

