如果linq查询中的值为null,如何分配空字符串?

时间:2013-05-10 20:41:41

标签: c# linq

我遵循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查询中执行此操作?

7 个答案:

答案 0 :(得分:30)

使用null coalescing operator ??

FieldValue = field.Value ?? ""

答案 1 :(得分:6)

FieldValue = field.Value ?? String.Empty

答案 2 :(得分:4)

使用null-coalescing operator

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”字段后看到该逗号“,”。希望我知道一种解决方法吗?