Ответ 1
Используйте оператор null коалесценции ??
:
FieldValue = field.Value ?? ""
У меня есть следующий запрос 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?
Используйте оператор null коалесценции ??
:
FieldValue = field.Value ?? ""
FieldValue = field.Value ?? String.Empty
Используйте null-coalescing operator
select new { ColumnName = col, FieldValue = field.Value ?? string.Empty };
оператор называется оператором с нулевым коалесцированием и используется для определения значения по умолчанию для типов допустимых значений или ссылочных типов. Он возвращает левый операнд, если операнд не равен нулю; в противном случае он возвращает правый операнд.
FieldValue = field.Value == null? "": field.Value
Используйте ?, чтобы вернуть пустую строку в случае 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" имеет значение null, то я все еще получаю это запятую "," зависающую после поля "StreetAddr". Хотел бы я знать, как это исправить?