Вы можете использовать коллекцию и String.Join
:
List<string> legals = new List<string>();
if(!reader.IsDbNull(reader.GetOrdinal("legal1")))
legals.Add(reader["legal1"].ToString());
if(!reader.IsDbNull(reader.GetOrdinal("legal2")))
legals.Add(reader["legal2"].ToString());
if(!reader.IsDbNull(reader.GetOrdinal("legal3")))
legals.Add(reader["legal3"].ToString());
LegalDesc = string.Join(" ", legals);
Конечно, вы можете также сделать код более элегантным с использованием метода пользовательского расширения:
public static string SafeGetString(this SqlDataReader reader, int colIndex)
{
if(!reader.IsDBNull(colIndex))
return reader.GetString(colIndex);
else
return string.Empty;
}
Теперь вы можете использовать:
string[] legals = { reader.SafeGetString(0), reader.SafeGetString(1), reader.SafeGetString(2) };
LegalDesc = string.Join(" ", legals.Where(s => !string.IsNullOrEmpty(s)));
Это предполагает, что это фактически столбец string
d порядковые позиции столбца составляют от 0 до 2. Если это не так, используйте приведенный выше подход reader.GetOrdinal
для их обнаружения.
Как насчет 'читателя [" legal2 "] ?? ""? –
Как насчет 'reader.IsDbNull'? – TryingToImprove
вы бы перефразировали мой скрипт ... спасибо – Jake