1

我正在开发一个票务系统,用于使用 ASP.NET MVC 4 和 Entity Framework 5 跟踪错误和软件更改。我需要一种方法来从一组可能的数字中选择一个唯一的数字。我的想法是创建一组可能的数字,并在这些数字被使用并分配给支持票时标记这些数字。

我有此代码用于生成所有可能的票号以供选择,但我希望有前导零,以便所有票号具有相同的长度:

public static class GenerateNumber
{
    private static IEnumerable<int> GenerateNumbers(int count)
    {
        return Enumerable.Range(0, count);
    }

    public static IEnumerable<string> GenerateTicketNumbers(int count)
    {
        return GenerateNumbers(count).Select(n => "TN" + n.ToString());
    }
}

我希望输出是
IEnumerable<string> ticketNumbers = GenerateNumber.GenerateTicketNumbers(Int32.MaxValue);
这样的:
TN0000000001

.
.
TN2147483647

希望我们不需要那么大的东西,Int32.MaxValue因为这意味着我们有太多的错误哈哈。我只是想安全,而不是对可用数字的限制感到抱歉。或许我们可以在解决票号后使用重新使用票号的方法。但是,我不知道我对重用的感觉如何,因为它可能会导致稍后引用文档时产生歧义。

考虑到这个集合的大小,这是获得唯一票号的最有效方法吗?

4

1 回答 1

5

使用数据库中的标识列 - 这将为您自动递增。

如果您还需要前缀,则将其存储为单独的 varchar 列,然后出于显示目的,您可以将其连接起来(如果绝对确实需要,请使用必要的前导零)。试图在 varchar 字段中存储一个递增的数字总有一天会咬你一口。


作为旁注,为什么前导零?如果我正在修复一张票,我想用票号注释我的代码。前导零只是一种痛苦 - 为什么不只使用 TN-123 并根据需要让数字变大呢?

于 2013-10-25T15:35:29.050 回答