Самый короткий способ проверить значение null и назначить другое значение, если нет
Я varchar
значения из БД и хотите установить string
Я назначаю их как "" если они null
. В настоящее время я делаю это так:
if (string.IsNullOrEmpty(planRec.approved_by) == true)
this.approved_by = "";
else
this.approved_by = planRec.approved_by.toString();
кажется, что должен быть способ сделать это в одной строке что-то вроде:
this.approved_by = "" || planRec.approved_by.toString();
Я не могу найти оптимальный способ сделать это. Есть ли лучший способ или то, что у меня есть лучший способ сделать это?10 ответов:
попробуйте это:
this.approved_by = IsNullOrEmpty(planRec.approved_by) ? "" : planRec.approved_by.toString();
вы также можете использовать оператор null-coalescing, как сказали другие - поскольку никто не привел пример, который работает с вашим кодом, вот один:
this.approved_by = planRec.approved_by ?? planRec.approved_by.toString();
но этот пример работает только с возможным значением для
this.approved_by
это то же самое, что и одно из потенциальных значений, которое вы хотите установить. Для всех остальных случаев вам нужно будет использовать условный оператор, как я показал в своем первом примере.
Я думаю, что лучшее, что вы можете придумать, это
this.approved_by = IsNullOrEmpty(planRec.approved_by) ? string.Empty : planRec.approved_by.ToString();
конечно, так как вы намекаете на то, что
approved_by
этоobject
(который не может равняться ""), это будет переписано какthis.approved_by = (planRec.approved_by ?? string.Empty).ToString();
The оператор сливаются (??) это то, что вы хотите, я считаю.
вы ищете оператор c# coalesce:??. Этот оператор принимает левый и правый аргумент. Если левая часть оператора имеет значение null или nullable без значения, он вернет правый аргумент. В противном случае он вернет левый.
var x = somePossiblyNullValue ?? valueIfNull;
С C#6 есть немного более короткий путь для случая, когда planRec.approved_by не строку:
this.approved_by = planRec.approved_by?.ToString() ?? "";
направить @ответ Дейва...если планрек.approved_by - это уже строка
this.approved_by = planRec.approved_by ?? "";
Используйте оператор c# coalesce:??
// if Value is not null, newValue = Value else if Value is null newValue is YournullValue var newValue = Value ?? YournullValue;
вы также можете сделать это в своем запросе, например, в sql server, google
ISNULL
иCASE
встроенные функции.