개체는 데이터베이스에 있습니다. PrDT는개체 null 인 경우 빈 문자열 반환
vi.PrDT = i.PrDateTime.Value.ToString("s");
빠른 방법은 무엇입니까 널 (NULL), PrDateTime이 DataTimeOffset 타입, 문자열인가? 다른 등의 경우 내가 원하지 않는 ...
개체는 데이터베이스에 있습니다. PrDT는개체 null 인 경우 빈 문자열 반환
vi.PrDT = i.PrDateTime.Value.ToString("s");
빠른 방법은 무엇입니까 널 (NULL), PrDateTime이 DataTimeOffset 타입, 문자열인가? 다른 등의 경우 내가 원하지 않는 ...
사용 conditional operator :
vi.PrDT = i.PrDateTime.HasValue ? i.PrDateTime.Value.ToString("s") :
string.Empty;
return i.PrDateTime.Value.ToString("s") ?? string.Empty;
i.PrDateTime이 null 인 경우 실패합니다 ... – Maarten
이 분명하면 'i .PrDateTime.Value'는 'i.PrDataTime'이 아니라 null입니다.하지만이 구문을 이해하지 못합니다 ... 어떻게 ToString ("s")이 null을 반환 할 수 있습니까? –
당신은 확장 방법을 수행 할 수 있습니다 다음
public static class NullableToStringExtensions
{
public static string ToString<T>(this T? value, string format, string coalesce = null)
where T : struct, IFormattable
{
if (value == null)
{
return coalesce;
}
else
{
return value.Value.ToString(format, null);
}
}
}
과 :
을vi.PrDT = i.PrDateTime.ToString("s", string.Empty);
거기에 if..else가 있습니다. ,하지만이 방법은 재사용이 가능한 가장 빠른 방법 인 것 같습니다. –
string.Format("{0:s}", i.PrDateTime)
위의 경우 null 인 경우 빈 문자열이 반환됩니다. Nullable<T>.ToString
은 null 값을 검사하고 빈 문자열이 있으면 반환하고, 그렇지 않으면 문자열 표현을 반환하지만 서식 지정자는 사용할 수 없습니다. 트릭은 string.Format을 사용하여 원하는 형식 지정자 (이 경우 s
)를 사용할 수 있으며 여전히 Nullable<T>.ToString
동작을 얻을 수 있습니다.
return (i.PrDateTime.Value ?? string.Empty).ToString();
테스트를 거쳤으므로 제대로 작동하는 것 같습니다.
if..else에 대한 의미 론적 설탕은 무엇입니까? –
@MichaelPaulukonis - 예. 그러나 그것은'if/else'가 아닙니다 ... – Oded
@MichaelPaulukonis - 꽤 많이. – KeithS