8,497
社区成员
发帖
与我相关
我的任务
分享
List<string> list = new List<string>()
{
"一年级XXXX",
"一年级XX",
"四年级XXXX",
"四年级XX",
"三年级XXXX",
"三年级XX",
"二年级XXXX",
"二年级XX",
"初一YYY",
"初三YYYY",
"大二YYY",
"大五YYYY",
"中班",
"小班"
};
List<string> sortBy = new List<string>() { "小班",
"中班",
"大班",
"一年",
"二年",
"三年",
"四年",
"五年",
"六年",
"初一",
"初二",
"初三",
"中一",
"中二",
"中三",
"高一",
"高二",
"高三",
"专一",
"专二",
"专三",
"大一",
"大二",
"大三",
"大四",
"大五",
"研一",
"研二" };
foreach (var item in list.OrderBy(x => sortBy.IndexOf(x.Substring(0,2))).ThenBy(x => x))
{
Console.WriteLine(item);
}
list.OrderBy(x => sortBy.IndexOf(x[0].ToString())
改成
list.OrderBy(x => sortBy.IndexOf(x.Substring(0,2))
上面那个一年级,二年级的级就不要了小班
中班
大班
一年级
二年级
三年级
四年级
五年级
六年级
初一
初二
初三
中一
中二
中三
高一
高二
高三
专一
专二
专三
大一
大二
大三
大四
大五
研一
研二
取前两位,国内大部分都全了吧 foreach (var item in list.OrderBy(x => "一二三四五六七八九".IndexOf(x[0])).ThenBy(x => x))
{
Console.WriteLine(item);
}
class StringCompare : IComparer<string>
{
public int Compare(string x, string y)
{
return string.Compare(x, y, StringComparison.Ordinal);
}
}
那只能用不靠谱的做法了……
List<string> list = new List<string>()
{
"一年级XXXX",
"一年级XX",
"四年级XXXX",
"四年级XX",
"三年级XXXX",
"三年级XX",
"二年级XXXX",
"二年级XX"
};
List<string> sortBy = new List<string>() { "一", "二", "三", "四", "五", "六", "七", "八", "九" };
foreach (var item in list.OrderBy(x => sortBy.IndexOf(x[0].ToString())).ThenBy(x => x))//先按第一个数字排序,后面再按默认规则排序
{
Console.WriteLine(item);
}
foreach (var item in list.OrderBy(x => x.IndexOf("一二三四五六七八九")))
{
Console.WriteLine(item);
}
class Program
{
static void Main(string[] args)
{
List<string> list = new List<string>()
{
"一年级XXXX",
"一年级XX",
"四年级XXXX",
"四年级XX",
"三年级XXXX",
"三年级XX",
"二年级XXXX",
"二年级XX"
};
foreach (var item in list.OrderBy(x=>x))
{
Console.WriteLine(item);
}
}
这样的显示结果可能不是按照年级顺序进行显示,我想按照年级顺序来显示