生成序列号的C#实体
如果Id为1,我尝试以这种格式生成参考编号0000001。我有一个前缀F和00000,它将被Id从后面覆盖。Id是自动递增的 这是我的方法,但它给出了F-1,等等,我想要F-0000001生成序列号的C#实体,c#,formatting,C#,Formatting,如果Id为1,我尝试以这种格式生成参考编号0000001。我有一个前缀F和00000,它将被Id从后面覆盖。Id是自动递增的 这是我的方法,但它给出了F-1,等等,我想要F-0000001 public class Function : BaseModel { public Function() { Ref = Sequence; } [ForeignKey("Corporate")] public int CorporateId { g
public class Function : BaseModel
{
public Function()
{
Ref = Sequence;
}
[ForeignKey("Corporate")]
public int CorporateId { get; set; }
public virtual Corporate Corporate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string Title { get; set; }
[ForeignKey("User")]
public int UserId { get; set; }
public virtual User User { get; set; }
public bool Approved { get; set; } = false;
public bool Completed { get; set; } = false;
public DateTime DateCreated { get; set; } = DateTime.Now;
public string Note { get; set; }
public string ContactPerson { get; set; }
public string ContactPersonPhone { get; set; }
public string ContactPersonEmail { get; set; }
public string Ref { get; set; }
private string Sequence
{
get
{
var seq = "F" + "-" + Id;
seq = seq.Replace(" ", "000000");
return seq;
}
}
}
只需将String.Format与一个: 返回:
F-001056
0
是一个零占位符将零替换为相应的数字(如果有);否则,结果字符串中将显示零。
格式项({0:…}
)之外的文本按原样复制到字符串中
该属性应如下所示:
private string Sequence { get{ return String.Format("F-{0:0000000}", Id);}}
private string Sequence
{
get
{
return "F-" + Id.ToString().PadLeft(6,"0");
}
}
或
尝试使用C#的PadLeft函数,如下所示:
private string Sequence { get{ return String.Format("F-{0:0000000}", Id);}}
private string Sequence
{
get
{
return "F-" + Id.ToString().PadLeft(6,"0");
}
}
使用,在属性中传递以下格式字符串,如下所示:
private string Sequence => "F-" + Id.ToString("D7");
更改“D7”以指示要填充多少个零。这会毫无原因地生成4个临时字符串。对
String.Format
的单个调用将生成所需的字符串。如果ID为1000,那么很遗憾,这将无法工作。结果会是:“F-0000001000”@PhillipMorton这个答案不是最好的,但它不会像你描述的那样工作。第一个参数(int totalWidth
)将只填充,直到达到该限制,因此对于建议的ID 1000,PadLeft(6,'0')
的结果将是“001000”一个旁注-您的问题与实体框架
没有任何共同之处,请删除该标记。这仍将生成一个临时字符串String.Format
不会保存ID,但在保存时只保存零