13

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

4

7 回答 7

34

使用空合并运算符 ??

FieldValue = field.Value ?? ""
于 2013-05-10T20:42:58.930 回答
6
FieldValue = field.Value ?? String.Empty
于 2013-05-10T20:42:53.830 回答
4

使用null-coalescing operator

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

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

于 2013-05-10T20:43:09.320 回答
4

FieldValue = field.Value == null ?“”:字段。值

于 2013-05-10T20:43:14.320 回答
1

在 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) };
于 2013-05-10T20:43:10.487 回答
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};
于 2013-05-10T20:44:59.763 回答
0

我还了解到,如果您在 linq 字段分配中连接两个字段,并且仅在其中一个字段上使用 null-coalescing 运算符,那么您需要在字段语句周围加上括号:

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

但是,这段代码也不是很好,因为如果“Suite”字段为空,那么我仍然会在“StreetAddr”字段之后得到那个逗号空格“,”。希望我知道解决这个问题的方法吗?

于 2019-07-24T05:09:36.403 回答