2011-01-10 91 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