我遵循LINQ查询来获取一组数据。
var fields = from row in datarows
from field in row
from col in columnnames
where field.Key == col
select new { ColumnName = col, FieldValue = field.Value };
问题是我的代码在此查询后处理字段失败,因为某些行的field.Value
正在返回null
。
我的目标是在检测到null
时分配一个空字符串。
像if field.Value == null, then field.Value = ""
是否可以在linq查询中执行此操作?
答案 0 :(得分:30)
使用null coalescing operator ??
:
FieldValue = field.Value ?? ""
答案 1 :(得分:6)
FieldValue = field.Value ?? String.Empty
答案 2 :(得分:4)
select new { ColumnName = col, FieldValue = field.Value ?? string.Empty };
?? operator被称为null-coalescing运算符,用于为可空值类型或引用类型定义默认值。如果操作数不为null,则返回左侧操作数;否则它返回正确的操作数。
答案 3 :(得分:4)
FieldValue = field.Value == null? “”:field.Value
答案 4 :(得分:1)
使用 ?? 运算符在空的情况下返回空字符串
var fields = from row in datarows
from field in row
from col in columnnames
where field.Key == col
select new { ColumnName = col, FieldValue = (field.Value ?? string.Empty) };
答案 5 :(得分:0)
var fields = from row in datarows
from field in row
from col in columnnames
where field.Key == col
select new { ColumnName = col, FieldValue = field.Value == null ? string.Empty: field.Value};
答案 6 :(得分:0)
我还了解到,如果您要在linq字段分配中连接两个字段,并且仅在其中一个字段上使用null-coalescing运算符,则需要在字段语句周围加上括号,如下所示:
StreetAddr = customer.StreetAddr + ", " + (customer.Suite ?? "")
但是,该代码也不是很好,因为如果“ Suite”字段为空,那么我仍然会在“ StreetAddr”字段后看到该逗号“,”。希望我知道一种解决方法吗?