在特定的顺序排序的SelectList顺序、在特定、SelectList

2023-09-03 22:50:04 作者:海是没有墙的城 /、

所以,我的选择列表中该方法生成:

 公共静态的SelectList HolidayDays()
{
    SelectList的RETVAL = GenerateKeyValueList< HolidayCity>(HolidayCityHelper.GetFriendlyName,HolidayCity.NotSet);

    //排序列表(纽约,伦敦....那么剩下的按顺序)


    返回RETVAL;
}
 

在GenerateKeyValueList<>方法定义如下:

 公共静态的SelectList GenerateKeyValueList< T>(Func键< T,字符串> nameGetter,T itemToNoInclude)其中T:结构,IComparable的,IConvertible
{
    名单< SelectListItem>名单=新的名单,其中,SelectListItem>();

    VAR enumList = Enum.GetValues​​(typeof运算(T));

    的foreach(在enumList VAR CURR)
    {
        T(T)=(T)CURR;
        如果(t.Equals(itemToNoInclude)==假)
        {
            list.Add(新SelectListItem(){文本= nameGetter(T),值= Convert.ToInt32(T)的ToString()});
        }
    }
    返回新的SelectList(列表中,价值,文字);
}
 

在首批上市的方法,我怎么排序的名单,以便在评论。我想名单有纽约作为第一要素,伦敦为2,然后按字母顺序排列的元素的其余部分。

解决方案

  list.OrderBy(I => i.Text ==纽约)
    .ThenBy(I => i.Text ==伦敦)
    .ThenBy(ⅰ=> i.Text);
 
excel按特定的顺序排序

或者你可以写:

  VAR项目从i =在列表
            排序依据i.Text ==纽约,i.Text ==伦敦,i.Text降
            选择我;
 

So I have a SelectList being generated in this method:

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

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


    return retval;
}

The GenerateKeyValueList<> method is defined here:

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");
}

In the first listed method, how do I sort the list as so in the comment. I want the list to have "New York" as the 1st element, "London" as the 2nd, and then the rest of the elements in alphabetical order.

解决方案

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

or you could write:

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