需要根据以下条件进行排序

本文关键字:条件 排序 | 更新日期: 2023-09-27 18:35:29

  1. 具有最大元音的州应排在第一位。

  2. 如果元音数相同,则

    • 检查州名称的长度以及最大长度的长度第一。

    • 如果长度也相同,则根据状态的第一个字符进行排序名字。

    • 如果第一个字符也相同,则根据其放置在列表中出现。

这是代码

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