首页 > 解决方案 > 带有字母和数字字符的订单下拉菜单

问题描述

我的 .NET Core 应用程序中有一个要排序的下拉列表,存在以下选项:

Multimachine
2-machine
Longmachine
Cutter
Vshape
4-machine
Cooler
Infeedmachine
3-Machine
Mainmachine

我想我可以简单地使用 LINQ 对这个选项列表进行排序;所以我会在我的控制器中使用以下内容:

ViewModel.MachineData = ViewModel.MachineData.OrderBy(m => m.Name.ToString()).ToList();

虽然我的剃刀观点是这样的:

<div class="form-group">
 <label>Machine</label>
   <select asp-for="Machine.ID" id="MachineName" class="form-control" >
      @foreach (var Machine in Model.MachineData)
      {
       <option value="@Machine.ID">@Machine.Name</option>
      }
   </select>
</div>

我希望排序能够处理数字/字母组合,或者至少显示一些排序,而大多数排序似乎是错误的。我得到以下排序列表:

Cooler
Cutter
Vshape
4-machine
Longmachine
Multimachine
Mainmachine
Infeedmachine
3-Machine
2-machine

我的代码有问题吗?还是我需要过滤掉我的号码?我想先得到字母数字,然后是数字;或者相反,如果这更容易实现。

标签: c#linqasp.net-corerazor

解决方案


您是否尝试过直接在视图中执行此操作?

<div class="form-group">
 <label>Machine</label>
   <select asp-for="Machine.ID" id="MachineName" class="form-control" >
      @foreach (var Machine in Model.MachineData.OrderBy(m => m.Name.ToString()).ToList())
      {
       <option value="@Machine.ID">@Machine.Name</option>
      }
   </select>
</div>

一般来说,你的代码不应该是错的:https ://dotnetfiddle.net/MxvEXb


推荐阅读