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

C#如何判断多个非空可空值是否全部相等?

在C#中判断多个可空值的所有非空值是否全部相等的最简方法

核心思路

过滤掉所有null的可空值,检查剩余的非空值是否完全一致(无任何非空值时也视为符合条件)。

最简实现(Linq方式)

方法一:去重后判断数量

通过Distinct()去重,若去重后的元素数量≤1,说明所有非空值都相等,代码简洁直观:

double? a = null;
double? b = 2;
double? c = 2;

var values = new[] { a, b, c };
bool allNonNullEqual = values.Where(v => v.HasValue)
                             .Select(v => v.Value)
                             .Distinct()
                             .Count() <= 1;
// 结果为true

方法二:基于第一个非空值校验

找到第一个非空值,校验所有其他非空值都与它相等,性能更优(无需遍历全部元素去重,遇到不相等值直接停止):

double? a = 4.5;
double? b = 4.5;
double? c = 4.5;

var nonNullValues = new[] { a, b, c }
                     .Where(v => v.HasValue)
                     .Select(v => v.Value);
bool allNonNullEqual = !nonNullValues.Any() || nonNullValues.All(v => v.Equals(nonNullValues.First()));
// 结果为true

测试案例验证

  • 案例1:

    double? a = null;
    double? b = 2;
    double? c = 3.5;
    

    非空值为2和3.5,去重后数量为2,返回false,符合预期。

  • 案例2:

    double? a = 2.5;
    double? b = 2;
    double? c = 2;
    

    非空值为2.5、2、2,去重后数量为2,返回false,符合预期。

  • 案例3:

    double? a = null;
    double? b = 2;
    double? c = 2;
    

    非空值均为2,去重后数量为1,返回true,符合预期。

  • 案例4:

    double? a = 4.5;
    double? b = 4.5;
    double? c = 4.5;
    

    非空值均为4.5,去重后数量为1,返回true,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:32:08