有沒有更好的方式來寫下面的有沒有更好的方法來重新編寫下面的代碼?
select new
{
PaymentId = String.IsNullOrEmpty(p.PaymentId) ? "" : p.PaymentId,
AgencyId = String.IsNullOrEmpty(p.AgencyId) ? "" : p.AgencyId,
...............
................
在此先感謝
有沒有更好的方式來寫下面的有沒有更好的方法來重新編寫下面的代碼?
select new
{
PaymentId = String.IsNullOrEmpty(p.PaymentId) ? "" : p.PaymentId,
AgencyId = String.IsNullOrEmpty(p.AgencyId) ? "" : p.AgencyId,
...............
................
在此先感謝
如果您確信p不是null
你可以寫
PaymentId = p.PaymentId ?? "";
的情況下PaymentId將空,它會返回一個空字符串
如果p可以爲null,則使用:PaymentId = p?.PaymentId ?? 「」。如果p爲null,則它也會返回「」。 –
@RuardvanElburg在C#6.0的情況下,情況會如此,但是,他確實將問題標記爲C#4.0問題 – Icepickle
您可以創建一個擴展方法:
public static class StringExtensions
{
public static GetValueOrStringEmpty(this string input)
{
return string.IsNullOrEmpty(input)
? string.Empty
: input;
}
}
然後,你可以如下重構代碼:
select new
{
PaymentId = p.PaymentId.GetValueOrStringEmpty()
AgencyId = p.AgencyId.GetValueOrStringEmpty(),
// ...
}
Dis claimer方法名稱GetValueOrStringEmpty
可能不是最合適的。所以我建議你考慮一個更直觀的名字。
您可以在C#中使用空合併運算符。
select new
{
PaymentId = p.PaymentId ?? string.Empty,
AgencyId = p.AgencyId ?? string.Empty,
................................
................................
您也可以使用它像這 -
select new
{
PaymentId = p?.PaymentId ?? string.Empty,
AgencyId = p?.AgencyId ?? string.Empty,
參考文獻:
'string.Concat(p.PaymentId)'或'p .PaymentId ?? string.Empty' – PetSerAl