С# SortedList с несколькими ключами. Как мне реализовать SortedList (или другую структуру), используя 2 ключа (приоритет и время)?

Я хочу написать программу, которая имитирует список ожидания на основе приоритета и времени прибытия. Приоритет имеет более высокий приоритет, чем время прибытия. Список будет содержать приоритет, время прибытия и имя. Я могу управлять одним ключевым приоритетом, именем или временем прибытия, именем. Как лучше совместить 2 ключа?


person Ha Vu    schedule 15.12.2015    source источник
comment
Вы можете использовать встроенный SortedSet и передать ему свой собственный IComparer<T>   -  person Rob    schedule 15.12.2015
comment
спасибо Роб за предложение.   -  person Ha Vu    schedule 16.12.2015


Ответы (1)


Попробуйте что-то вроде кода ниже. Метод CompareTo() позволит вам использовать стандартные методы сортировки.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication61
{
    class Program
    {
        static void Main(string[] args)
        {
            SortedList<PriorityTime, string> sList = new SortedList<PriorityTime, string>();

        }
    }

    public class PriorityTime : IComparable<PriorityTime>
    {
        public int priority { get; set; }
        public DateTime time { get; set; }

        public int CompareTo(PriorityTime other)
        {
            if (other.priority != this.priority)
            {
                return this.priority.CompareTo(other.priority);
            }
            else
            {
                return this.time.CompareTo(other.time);
            }
        }
    }

}
person jdweng    schedule 15.12.2015
comment
Спасибо. Как раз то, что мне было нужно. - person Ha Vu; 16.12.2015
comment
Мне нравится, как вы закодировали метод CompareTo, он очень чистый. - person Ha Vu; 16.12.2015