results = results.Where(x => x.SomeValue ?? 0 == 0);
我想检查一个值是否为null,如果为null,则将其设为零,然后进行比较。
我不知道如何加上额外的括号()
错误信息是:
答案 0 :(得分:7)
results = results.Where(x => (x.SomeValue ?? 0) == 0);
但是如果你处理可空类型,我发现更可读的显式检查为null:
results = results.Where(x => !x.SomeValue.HasValue || x.SomeValue == 0);
另一个选项是GetValueOrDefault()
方法,它将为整数(长整数,字节)返回零:
results = results.Where(x => x.SomeValue.GetValueOrDefault() == 0);
答案 1 :(得分:3)
试试这个......
results = results.Where(x => (x.SomeValue ?? 0) == 0);
答案 2 :(得分:1)
假设x.SomeValue
是一个可以为空的int,你可以这样做:
results = results.Where(x => (x.SomeValue ?? 0) == 0);
但你只能"取代" null值与相同类型的值,所以如果它是一个字符串或其他东西,这将无法正常工作。
您也可以使用内联if运算符执行此操作:
results = results.Where(x => x.SomeValue == null ? true : x.SomeValue == 0)
答案 3 :(得分:1)
你需要一个可以为null的int(int?)类型。
results = results.Where(x => (x.SomeValue ?? 0) == 0);