2013-12-17 23 views
0

所有,的SelectList不回来了排序 - C#MVC 3

我想我的选择列表的项目进行排序,然后在前面加上一个默认列表项的列表,像“选择一个项目下面的”,并通过返回列表一个方法。我注意到列表没有被排序,因为从ReSharper的说法来看,我需要返回排序结果 - 所以我的方法没有返回排序列表。

有没有办法做排序和预先在方法?

以下是我有:

 public static IEnumerable<SelectListItem> GetBuildingClubs(List<BuildingClub> localClubs, List<BuildingClub> psfyClubs) 
    { 
     var buildingClubList = new List<SelectListItem>(); 
     IEnumerable<BuildingClub> allBuildingClubs = localClubs.Union(psfyClubs); 
     foreach (BuildingClub b in allBuildingClubs) 
     { 


      buildingClubList.Add(new SelectListItem 
      { 
       Value = b.MasterCustomerId, 
       Text = b.NewBuildingClubName 

      }); 


     } 

     //Sort list 
     buildingClubList.OrderBy(c => c.Text); 

     //Prepend to sorted list 
     buildingClubList.Insert(0, new SelectListItem 
     { 
      Value = "", 
      Text = "Select an Item Below" 

     }); 

     return buildingClubList; 

    } 

回答

4

OrderBy不修改输入列表;它会返回一个新的排序序列。你需要存储序列,并用它来建立您的清单:

buildingClubList = buildingClubList.OrderBy(c => c.Text).ToList(); 

另外,对项目进行排序,你将它们添加到列表之前:

IEnumerable<BuildingClub> allBuildingClubs = localClubs.Union(psfyClubs).OrderBy(b => b.NewBuildingClubName); 
+0

非常有用 - 感谢 – Slinky