You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5生成装箱编码时重复包装编号问题求助

解决重复包装编号显示问题

问题核心是输入的packsNo包含重复值,但原代码未做去重处理,导致生成的编码中重复编号多次出现。只需在处理前对包装编号集合去重即可解决。

修改后的代码如下:

protected string GeneratePackingCode(IEnumerable<int> packsNo, IEnumerable<string> companies = null)
{
    if (!packsNo.Any())
        return string.Empty;

    var packingCode = "Pack:";
    // 先去重再排序,确保同一编号只处理一次
    var packs = packsNo
        .Distinct()
        .OrderBy(e => e);

    var count = packs.Count();

    int first = packs.First(),
        prev = first,
        curr = first;

    for (int i = 1; i <= count; i++)
    {
        if (i < count)
            curr = packs.ElementAt(i);

        if (prev + 1 != curr)
        {
            if (first != prev)
                packingCode += $"{first}:{prev},";
            else
                packingCode += $"{first},";

            first = curr;
        }

        prev = curr;
    }

    packingCode = packingCode.TrimEnd(',');

    if (companies != null && companies.Any())
    {
        var companiesName = companies
            .Distinct()
            .OrderBy(e => e)
            .ToList();

        packingCode += $" ({string.Join(',', companiesName)})";
    }

    return packingCode;
}

关键修改点

  • 在包装编号处理链中添加.Distinct():确保集合中每个编号唯一,后续排序和区间合并逻辑只会处理一次相同编号。
  • 原代码中companies部分已使用.Distinct(),保持该逻辑不变即可。

例如输入重复的[4,4,2,3,4],去重排序后变为[2,3,4],生成的编码会是Pack:2:4,不会出现重复的4。

内容的提问来源于stack exchange,提问作者Maryam Hossini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:27:26