问题描述
我试图按数字升序对选择列表项值进行排序。目前,它是排序顺序,但是该顺序是字母数字顺序。例如,所选列表项的值是'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中的更多内容