Home > Blockchain >  Unity - Sorting a nested list
Unity - Sorting a nested list

Time:06-20

I'm trying to figure out how to sort a nested List in Unity. I have my:

[System.Serializable]
public class HistoryRecordList
{
    public int recordDate;
    public string record;
}

And my list here:

public class InputMachine : MonoBehaviour
{    
    public List<HistoryRecordList> historyRecords = new List<HistoryRecordList>();

    public void AddToHistory(int ID, string description)
    {
        HistoryRecordList list = new HistoryRecordList();
        list.recordDate = ID;
        list.record = description;

        historyRecords.Add(list);
    }
}

I like to sort the list "historyRecords" by recordDate; I know, there is a list.Sort() function but I don't know how to apply it to a nested list. Maybe someone knows how to do it?

CodePudding user response:

There are many ways to solve this problem.


LINQ

Implement (Ascending)

private static List<HistoryRecordList> SortRecordDate(IEnumerable<HistoryRecordList> list)
{
  return list.OrderBy(x => x.recordDate).ToList();
}

How to use

historyRecords = SortRecordDate(historyRecords);

List<>.Sort(Comparison<T>)

Implement (Ascending)

private static void SortRecordDate(List<HistoryRecordList> list)
{
  list.Sort((x, y) => x.recordDate.CompareTo(y.recordDate));
}

Implement (Descending)

private static void SortRecordDate(List<HistoryRecordList> list)
{
  list.Sort((x, y) => y.recordDate.CompareTo(x.recordDate));
}

How to use

SortRecordDate(historyRecords);

Hope your problem is solved :)

  • Related