如何按数字升序对SelectListItem值进行排序

问题描述

我试图按数字升序对选择列表项值进行排序。目前,它是排序顺序,但是该顺序是字母数字顺序。例如,所选列表项的值是'1','2','3','12','13'。我想按给定顺序显示下拉列表。但是在下拉菜单中,显示为“ 1”,“ 12”,“ 13”,“ 2”,依此类推 如何使其数字排序。我的模特是

public class Category
{
    [Key]
    public int Id { get; set; }

    [Display(Name="Category Name")]
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
}

在控制器中

IEnumerable<Category> CatList =   _unitOfWork.Category.GetAll();
        ProductVM productVM = new ProductVM()
        {
            Product=new Product(),CategoryList = _unitOfWork.Category.GetAll().Select(i => new SelectListItem {
                Text = i.CategoryName,Value = i.Id.ToString()
            }),

我想按ID的顺序显示文本i.CategoryName。

谢谢 波尔

解决方法

您看到的当前排序是这样的,因为Id在您的情况下是字符串类型,并且字符串按升序排序。相反,您可以首先使用OrderBy的{​​{1}}扩展方法对列表进行排序,然后创建类型为LINQ的列表。修改后的方法如下所示

SelectListItem

文档here中的更多内容

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...