如何在单选按钮中排序和显示 <IList> 元素?

问题描述

我的模型中有 IList<String> 类型的数据,以 yyyyMM 格式返回字符串日期,我需要帮助以 MM/yyyy 格式以单选按钮按降序排序显示数组元素。

我的模型如下所示:

 public class DataToLoad
 {
        public List<string> Months{ get; set; }       
 }

在我看来,我有以下内容可以在单选按钮中显示数组元素。

foreach (var record in Model.Months)
{
  <div class="radio col-12">
     <div class="row">
       <div class="col-5" style="">
         @Html.RadioButton("Months",record,true,new { id = record,@class = "m-r" })<label>@record</label>
        </div>
      </div>
   </div>
}

如果 Months 返回 199008 和 19909,我需要对值进行降序排序并格式化为 MM/yyyy 并使用单选按钮 09/1990 first then 08/1990 显示这些值。有什么帮助吗?

解决方法

您可以使用此代码:

foreach (var record in Model.Months.Select(x=>$"{x.Substring(4,2)}/{x.Substring(0,4)}").OrderByDescending(x=>x))
{
     <div class="radio col-12">
        <div class="row">
          <div class="col-5" style="">
            @Html.RadioButton("Months",record,true,new { id = record,@class = "m-r" })<label>@record</label>
           </div>
         </div>
      </div>
}
,

与任何其他 C# 代码一样,使用 Linq:

   @foreach (var record in Model.Months.OrderBy(x => x))
   {
     <div class="radio col-12">
        <div class="row">
          <div class="col-5" style="">
            @Html.RadioButton("Months",@class = "m-r" })<label>@record</label>
           </div>
         </div>
      </div>
    }