C#の並び替え方法


現在。C#の勉強中です。  
まったくの未経験から練習問題を問いているのですが、  
並び替えで行き詰まってしまいました。

以下のコードで、

１．男のみのlist作成  
２．女のみのlist作成  
３．それぞれのlistのA〜Hを昇順に並べる

という処理を実装したいのですが、  
ネットで調べたのですが、  
どういう方法があるのかわかりません。  
ご教授いただけないでしょうか。

[code]

    class Person
        {
            public string Name;
            public string Gender;
            public Person(string name, string gender)
            {
                this.Name = name;
                this.Gender = gender;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                List<string> list = new List<string>();
                list.Add("E 女");
                list.Add("F 女");
                list.Add("G 男");
                list.Add("H 男");
                list.Add("A 女");
                list.Add("B 男");
                list.Add("C 女");
                list.Add("D 男");
    
                List<Person> People = new List<Person>();
    
                foreach (string s1 in list)
                {
                    string[] splitdata = s1.Split(' ');
                    People.Add(new Person(splitdata[0], splitdata[1]));
                }
    
    
                foreach (Person a in People)
                {
                    Console.WriteLine("{0} {1}", a.Name, a.Gender);
                }
            }
        }
    
[/code]

尚、並び替えはLINQを使わず、  
出来るだけ、繰り返しや、分岐処理を使い、  
並び替えたいのです。



[code]

    class Person
    {
        public string Name;
    
        public string Gender;
    
        public Person(string name, string gender)
        {
            this.Name = name;
            this.Gender = gender;
        }
    
        public static Person FromString(string text)
        {
            var array = text.Split(' ');
            return new Person(array[0], array[1]);
        }
    }
    
    static void Main(string[] args)
    {
        var list = new List<string>
        {
            "E 女",
            "F 女",
            "G 男",
            "H 男",
            "A 女",
            "B 男",
            "C 女",
            "D 男",
        };
    
        var people = list.Select(_ => Person.FromString(_)).ToList();
    
        Console.WriteLine("people");
        Display(people);
        Console.WriteLine();
    
        var males = people.Where(_ => _.Gender == "男").ToList();
        OrderByName(males);
    
        Console.WriteLine("males");
        Display(males);
        Console.WriteLine();
    
        var females = people.Where(_ => _.Gender == "女").ToList();
        OrderByName(females);
    
        Console.WriteLine("females");
        Display(females);
        Console.WriteLine();
    }
    
    static void Display(IEnumerable<Person> people)
    {
        foreach (var person in people)
        {
            Console.WriteLine($"{person.Name} {person.Gender}");
        }
    }
    
    static void OrderByName(List<Person> people)
    {
        for (var i = 0; i < people.Count - 1; i++)
        {
            for (var j = people.Count - 1; j > i; j--)
            {
                if (people[j].Name[0] < people[j - 1].Name[0])
                {
                    var temp = people[j - 1];
                    people[j - 1] = people[j];
                    people[j] = temp;
                }
            }
        }
    }
    
[/code]

とか。

