linq查询时,如果值为空,如何赋空字符串

本文关键字:何赋空 字符串 查询 如果 linq | 更新日期: 2023-09-27 18:13:09

我有以下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查询中可以这样做吗?

linq查询时,如果值为空,如何赋空字符串

使用空合并操作符??:

FieldValue = field.Value ?? ""
FieldValue = field.Value ?? String.Empty

使用null-coalescing operator

select new { ColumnName = col, FieldValue = field.Value ?? string.Empty };

? ?操作符称为空合并操作符,用于为可空值类型或引用类型定义默认值。如果操作数不为空,则返回左操作数;否则返回正确的操作数

FieldValue = field。Value == null ?:字段。值

使用??操作符在null

的情况下返回空字符串
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) };
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};

我还了解到,如果您在linq字段赋值中连接两个字段,并且仅在其中一个字段上使用空合并操作符,那么您需要在字段语句周围加上括号,如下所示:

StreetAddr = customer.StreetAddr + ", " + (customer.Suite ?? "")

然而,这段代码也不是很好,因为如果"Suite"字段为空,那么我仍然得到了逗号空格","挂在"StreetAddr"字段之后。希望我有办法解决这个问题?