<AppSettings>
  <FileFolder>D:\C#作成物</FileFolder>
  <SKey>User0002</SKey>
  <Users>
    <User Id="User0004">
      <date>2019/10/16</date>
      <Key />
      <Address>D:\C#作成物\顔マーク_フリー素材\img048_22.png</Address>
    </User>
    <User Id="User0002">
      <date>2019/10/16</date>
      <Key />
      <Address>D:\C#作成物\顔マーク_フリー素材\img038_39.png</Address>
    </User>
    <User Id="User0003">
      <date>2019/10/16</date>
      <Key>3</Key>
      <Address />
    </User>
  </Users>
</AppSettings>

public class AppSettings
{
    public string FileFolder { get; set; };
    public string SKey { get; set; };
    public List<User> Users { get; set; }
    public class User
    {
        [System.Xml.Serialization.XmlAttribute("Id")]
        public string Id { get; set; }
        public string date { get; set; }
        public string Key { get; set; }
        public string Address { get; set; }
    }

    [NonSerialized()]
    private static AppSettings _instance;

    [System.Xml.Serialization.XmlIgnore]
    public static AppSettings Instance
    {
        get
        {
            if (_instance == null)
                _instance = new AppSettings();
            return _instance;
        }
        set { _instance = value; }
    }
}

※xml追加などの作業はすべてMainFormで行い、ロード・セーブはインスタンスを行ったAppSettings.csでします

案1(MainForm)addで最後に追加後、ソートする

            var query = (from x in AppSettings.Instance.Users
                         orderby x.Id
                         select x);

問題点:このソートではインスタンスに継承されないので、インスタンスにソートを反映させる方法を知りたいです。

案2(MainForm)インスタンスのId検索後、その手前にId以下date、Key、Addressを挿入したいです

indexを指定して挿入すれば良さそうですが、指定Idのindexを取得するにはどうしたらよいのでしょうか?

申し訳ありませんが、お力をお借りしたくよろしくお願いいたします

追記:
挿入方法など難しかったので、Idの情報や子ノードを消さずに変更する事で対応することにしました。よって質問自体は不要になってしまったのですが、今後必要になった場合に挿入の方法、ソートの反映に関してアドバイスいただけたら嬉しく思います。
よろしくお願いいたします