【问题标题】:Check if string is null and if it is replace it (C#)检查字符串是否为空以及是否替换它(C#)
【发布时间】:2019-02-21 20:23:54
【问题描述】:

我有以下代码:

var resultToReturn = (from i in lstOverview
                              select new string[]
                              {
                i.num.ToString(),
                i.name,
                DataAccess.data.getGameType(i.type),
                i.dateComingOut.Value.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture),
                i.userLastUpdated.ToString(),
                i.freeOrPay.ToString(),
                $"<div><a href='{editLink + "/" + i.id}' class='btn btn-primary'>Edit</a></div>"
                              }).ToArray();

我需要能够检查i.dateComingOut 是否为空,如果是,请将其替换为“n/a”。

实现这一目标的最佳方法是什么?

我们可以在选择本身中做到这一点吗?

【问题讨论】:

标签: c# arrays string


【解决方案1】:
var resultToReturn = (from i in lstOverview
                          select new string[]
                          {
            i?.num.ToString(),
            i?.name,
            DataAccess.data.getGameType(i?.type),
            i?.dateComingOut?.Value.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) ?? "n/a",
            i?.userLastUpdated.ToString(),
            i?.freeOrPay.ToString(),
            $"<div><a href='{editLink + "/" + i?.id}' class='btn btn-primary'>Edit</a></div>"
                          }).ToArray();

请注意,您应该在每次使用 i 变量时检查整个查询是否为 null,否则您将收到 NullReferenceException

【讨论】:

  • 我确实尝试过,但是当我要求显示我的数据表时仍然收到错误 500,因为我有一个日期为空条目。所以它不会显示“n/a”
  • @Jeremy 我已经更新了我的代码。您的代码的问题是,如果 i 可以为 null,则每次使用时都需要使用相同的模式。
  • 我通过将日期行更改为:i.dateComingOut?.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) ?? "n/a"
  • @ZackISSOIR - .Value 表示它是可以为空的类型,我想?:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
  • @xdflames,我加了我?因为我不知道他的列表 lstOverview 是否包含 litteral null,如果是的话会抛出 NullReferenceException。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多