有没有更好的方法来重写下面的代码?

时间:2017-02-18 07:23:26

标签: c# c#-4.0

有没有更好的方法来写下面的内容?

    select new
    {
   PaymentId = String.IsNullOrEmpty(p.PaymentId) ? "" : p.PaymentId,
   AgencyId = String.IsNullOrEmpty(p.AgencyId) ? "" : p.AgencyId,
...............
................

4 个答案:

答案 0 :(得分:5)

如果你确定p不是null,你可以写

PaymentId = p.PaymentId ?? "";

如果PaymentId为null,则返回空字符串

答案 1 :(得分:2)

您可以创建一个扩展方法:

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(),
    // ...
}

免责声明方法GetValueOrStringEmpty的名称可能不是最合适的。所以我建议你考虑一个更直观的名字。

答案 2 :(得分:2)

您也可以像这样使用它 -

   select new
    {
      PaymentId = p?.PaymentId ?? string.Empty,
      AgencyId = p?.AgencyId ?? string.Empty,

参考文献:

Null-conditional Operators

null-coalescing operator

答案 3 :(得分:1)

您可以在C#中使用null-coalescing运算符。

   select new
    {
      PaymentId = p.PaymentId ?? string.Empty,
      AgencyId = p.AgencyId ?? string.Empty,
      ................................
      ................................