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

如何对DPD取件点Select选项列表按国家、城市、商家排序分组

问题解答

需要对取件点数据集(你所说的domTree)进行排序分组处理,而且建议在后端控制器层面完成,而非前端DOM操作,原因及实现思路如下:

  • 后端处理更高效:HttpClient获取DPD取件点数据后,直接在C#中完成排序分组逻辑,避免前端处理大量数据时的性能损耗,尤其当取件点数量较多时优势明显。
  • 逻辑集中易维护:排序分组规则统一放在控制器中,和数据获取逻辑整合,后续调整排序维度或分组规则时,无需修改前端Razor视图代码。
  • 适配Razor分组渲染:后端处理后可生成countryCode→city→companyName层级的分组数据结构,Razor视图能借助optgroup标签轻松渲染成分组下拉列表,大幅提升用户查找效率。

后端处理示例(C#控制器代码)

假设取件点模型为ParcelShop,包含ParcelShopId、CountryCode、City、CompanyName属性:

// 通过HttpClient获取取件点列表
var parcelShops = await _httpClient.GetFromJsonAsync<List<ParcelShop>>("你的DPD API地址");

// 按countryCode、city、companyName排序并分组
var groupedShops = parcelShops
    .OrderBy(s => s.CountryCode)
    .ThenBy(s => s.City)
    .ThenBy(s => s.CompanyName)
    .GroupBy(s => new { s.CountryCode, s.City })
    .ToList();

// 将分组数据传递给视图
ViewBag.GroupedParcelShops = groupedShops;

Razor视图渲染示例

<select name="SelectedParcelShopId" id="parcelShopSelect">
    @foreach (var group in ViewBag.GroupedParcelShops as IEnumerable<IGrouping<dynamic, ParcelShop>>)
    {
        <optgroup label="@($"{group.Key.CountryCode} - {group.Key.City}")">
            @foreach (var shop in group)
            {
                <option value="@shop.ParcelShopId">@shop.CompanyName</option>
            }
        </optgroup>
    }
</select>

注:如果你的"domTree"指前端DOM结构,无需直接操作DOM排序分组;若指后端存储的取件点数据集,则必须对其做排序分组处理,才能实现需求中的下拉列表展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:32:40