2011-01-10 2 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"); 
} 

В первой перечисленной методе, как Я сортирую список так, как в комментарии. Я хочу, чтобы в списке был «Нью-Йорк» как первый элемент, «Лондон» - как второй, а затем остальные элементы в алфавитном порядке.

ответ

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

Могу ли я сделать это по пункту SelectList в первом методе? Я не хочу трогать метод конвертации. – slandau

+0

По какой-то причине это не работает = / – slandau

Смежные вопросы