需要根据以下条件进行排序
本文关键字:条件 排序 | 更新日期: 2023-09-27 18:35:29
-
具有最大元音的州应排在第一位。
-
如果元音数相同,则
-
检查州名称的长度以及最大长度的长度第一。
-
如果长度也相同,则根据状态的第一个字符进行排序名字。
-
如果第一个字符也相同,则根据其放置在列表中出现。
-
这是代码
Public static void Main(string[] args)
{
List<ClsState> states = new List<ClsState>();
states.Add(new ClsState("Gujarat"));
states.Add(new ClsState("Maharashtra"));
states.Add(new ClsState("Punjab"));
states.Add(new ClsState("AndhraPradesh"));
states.Add(new ClsState("Telengana"));
var result = states.OrderBy(a => a.StateName.Length)
.ThenBy(a => a.StateName);
}
static void Main(string[] args)
{
List<ClsState> states = new List<ClsState>
{
new ClsState("Gujarat"),
new ClsState("Maharashtra"),
new ClsState("Punjab"),
new ClsState("AndhraPradesh"),
new ClsState("Telengana"),
};
var vowls = new List<char> { 'a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y' };
var sorted = states
.Select(s => new Tuple<int, ClsState>(s.StateName.ToCharArray().Where(l => vowls.Contains(l)).Count(), s))
.OrderByDescending(i => i.Item1)
.ThenByDescending(i => i.Item2.StateName.Length)
.ThenBy(i => i.Item2.StateName[0])
.ThenByDescending(i => states.Where(s => s.StateName == i.Item2.StateName).Count());
}
正如评论中要求的那样,下面打印名称:
foreach(var state in sorted)
{
Console.WriteLine(state.Item2.StateName);
}