Есть оператор или встроенная функция, чтобы просто:
myVal = object1.object2.something(a,b).dataColumn.toString()==""?object1.object2.something(a,b).dataColumn.toString():"-";
Я знаю, что могу сделать что-то вроде:
string str = object1.object2.something(a,b).dataColumn.toString();
myVal =str==""?"-":str;
но у меня много объектов, и я хочу избежать этого:
string str1 = object1.object2.something(a,b).dataColumn1.toString();
myVal1==""?str1:"-"
string str2 = object1.object2.something(a,b).dataColumn2.toString();
myVal2==""?str2:"-"
:
string strN = object1.object2.something(a,b).dataColumnN.toString();
myValN==""?strN:"-"
Я также могу создать функцию:
private string CheckNull(object dataColumn){
return dataColumn == System.DBNull?"-":dataColumn.toString();
}
myVal1 = CheckNull(object1.object2.something1(a,b).dataColumn.toString())
myVal2 = CheckNull(object1.object2.something2(a,b).dataColumn.toString())
myVal3 = CheckNull(object1.object2.something3(a,b).dataColumn.toString())
Самый простой способ - использовать ?? оператор, но проблема в том, что 'dataColumn' не совместим с ?? потому что иногда возвращает system.DBNull вместо NULL. Посмотрите на непосредственный вывод окна:
System.DBNull??"-"
'System.DBNull' is a 'type', which is not valid in the given context
null??"-"
"-"
Интересно, есть ли какая-либо (строковая) функция или оператор, который может возвращать "-", если dataColumn.toString () == "" без if..then (потому что мне пришлось бы сделать много if..then для все они. В противном случае я скорее использую функциональный подход, показанный выше.
string str = object1.object2.something(a,b).dataColumn.toString().if("","-");