Sort two Lists together as one?

前端 未结 7 2055
执笔经年
执笔经年 2020-12-07 01:30

I have two List which I am accessing by index (e.g. Name[10], Date[10]). They\'re closely tied, so Name[10] is related to Date[1

相关标签:
7条回答
  • 2020-12-07 01:56

    you can use dictionary with Key Name , and value Date

    and U can after that sort them easily

    0 讨论(0)
  • 2020-12-07 01:58

    It sounds like you're fighting against doing the obvious solution which involves a little bit of upfront work: creating a type to encapsulate the name/date pair.

    That's absolutely what you should do. Then you can have one list, sort it by name or by date or whatever you want, and you never need to worry about the two lists getting out of sync etc.

    If your Results class doesn't do anything apart from contain those two lists, you can actually end up with the same number of types - you can ditch Results entirely, in favour of List<Result> where Result has a name and a date.

    0 讨论(0)
  • 2020-12-07 01:58
    List<Tuple<string,DateTime> NameDateList {get; set; }
    

    Is an easy way to accomplish what you want, but for clarity you are probably better off making a custom type to house them such as:

    public class NameDate
    {
        public string Name { get; set; }
        public DateTime Date{ get; set; }
    }
    

    Then you could use:

    List<NameDate> NameDateList {get; set; }
    
    0 讨论(0)
  • 2020-12-07 01:59

    Use the Array.Sort overload that takes an array of keys and an array of values, it does precisely what you want. (This method has been available since .NET 2.0.)

    0 讨论(0)
  • 2020-12-07 02:01

    Create a class called "Result" with two properties

    public class Result
    {
      public string Name {set;get;}
      public DateTime Date { set;get;}
    }
    

    Now you may create a List of this class

    List<Result> objListResult=new List<Result>();
    

    Now in your case, If you want, you may read the content of your indidual List and put it to our new List. (This is only purticular to your case, if you really want to move data from your old Lists to our new List. If possible you may update the code where you load data to two List(that is the correct way) so that it will load data to our new List of Type Result and avoid this porting code to move data to new List.

     for(int i=0;i<Name.Count;i++)
     {
       objListResult.Add(new Result { Name =Name[i].ToString(), Date[i].ToString() });
     }
    

    You can access the Items from the new List like this

     objListResult[2].Date   
    

    will give you the Date Stored for the second object in the list

     objListResult[2].Name
    

    will give you the Name Stored for the second object in the list

    0 讨论(0)
  • 2020-12-07 02:11

    Do yourself a favor and keep the two things together:

    public class NameAndDate {
      public string Name { get; set; }
      public DateTime Date { get; set; }
    }
    

    Then you keep them in one list (List<NameAndDate>):

    If you want to sort by the name, add a IComparer implementation to NameAndDate, then you can just call Sort() on the list.

    If you want to keep access to the Name and the Date, add accessor methods to Results, like

    public string GetName(int index) {
      return list[i].Name;
    }
    
    0 讨论(0)
提交回复
热议问题