2011-01-10 44 views
2

所以我正在这种方法产生的SelectList:排序的SelectList

public static SelectList HolidayDays() 
{ 
    SelectList retval = GenerateKeyValueList<HolidayCity>(HolidayCityHelper.GetFriendlyName, HolidayCity.NotSet); 

    //sort list (NY, London....then the rest in order) 


    return retval; 
} 

的GenerateKeyValueList <>方法定义如下:

public static SelectList GenerateKeyValueList<T>(Func<T, string> nameGetter, T itemToNoInclude) where T : struct, IComparable, IConvertible 
{ 
    List<SelectListItem> list = new List<SelectListItem>(); 

    var enumList = Enum.GetValues(typeof(T)); 

    foreach (var curr in enumList) 
    { 
     T t = (T)curr; 
     if (t.Equals(itemToNoInclude) == false) 
     { 
      list.Add(new SelectListItem() { Text = nameGetter(t), Value = Convert.ToInt32(t).ToString() }); 
     } 
    } 
    return new SelectList(list, "Value", "Text"); 
} 

在第一家上市的方法,怎么办我在评论中对列表进行排序。我希望列表中的第一个元素是“New York”,第二个元素是“London”,然后是按字母顺序排列的其他元素。

回答

3
list.OrderBy(i => i.Text == "New York") 
    .ThenBy(i => i.Text == "London") 
    .ThenBy(i => i.Text); 

,或者你可以写:

var items = from i in list 
      orderby i.Text == "New York", i.Text == "London", i.Text descending 
      select i; 
+0

我可以在第一种方法做这个选择列表的项目?我不想触摸转换方法。 – slandau 2011-01-10 21:46:28