【问题标题】:How to add leading 0 to int variable如何将前导0添加到int变量
【发布时间】:2020-11-09 19:25:40
【问题描述】:

我有一个包含 int 类型的 instanceNumber 属性的列表,如果它的值小于 10,我想添加前导 0。即 01,02...09 在 10,11,12 之后等等。我试过了以下代码,但它没有工作

 var sidList = _sidRepository.GetAllList().Where(q=>q.IsDeleted==false).OrderByDescending(q=>q.Id).ToList();
            if (sidList.Count > 0)
            {
                sidList.Where(w => w.InstanceNumber<10).ToList().
                    ForEach(s => s.InstanceNumber = s.InstanceNumber.Value.ToString("D").Length + 2);
            }

【问题讨论】:

  • 你的问题没有意义。 int 只是一个数字,而 01 与 1 完全相同。可能有前导零的,它是数字的 字符串表示。使用n.ToString().PadLeft(2, '0') 创建一个带有前导零的两位数字符串。
  • @Klaus 或带有格式说明符的 ToString,例如 "00"
  • @AfaqRajput 你能用所需的输出编辑问题吗?
  • 它的工作,但你可以看到我把这个值存储回实例号,它是 int,这个特定的代码返回字符串,如果我转换它,它会再次删除前导 0

标签: c# asp.net .net .net-core


【解决方案1】:

试试这个:

var sidList = _sidRepository.GetAllList()
    .Where(q => !q.IsDeleted)
    .OrderByDescending(q => q.Id)
    .ToList();

if (sidList.Any())
{
    sidList
        .Where(w => w.InstanceNumber < 10)
        .ToList()
        .ForEach(s => s.InstanceNumber = s.InstanceNumber.Value.ToString("00").Length + 2);
}

我的建议:

var sidList = _sidRepository.GetAllList()
    .Where(q => !q.IsDeleted)
    .OrderByDescending(q => q.Id);

if (sidList.Any())
    foreach (var item in sidList.Where(i => i.InstanceNumber < 10))
        item.InstanceNumber = item.InstanceNumber.Value.ToString("00").Length + 2;

我的建议将返回 IEnumerable&lt;item&gt; 而不是 List&lt;item&gt;,但如果需要,您可以在之后使用 .ToList() 处理它,但您将从性能中受益,因为您将避免 ToList(ing ) 两次。

【讨论】:

  • 它不能为所有值小于 10 的元素输出 4
  • 看看here,我用的是同样的字符串格式,你确定吗?
猜你喜欢
  • 2014-09-09
  • 2019-01-04
  • 2021-11-21
  • 1970-01-01
  • 2011-11-03
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多