所以,我的选择列表中该方法生成:
公共静态的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);
或者你可以写:
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;