Как получить доступ к элементу SortedSet без повторения?

Я новичок в С#, и у меня есть проблема. Я заполнил 2 SortedSet множеством (тысячами) пользовательских объектов, и я пытаюсь создать функцию, которая быстро обращается к другому SortedSet, не повторяя их (итерация занимает слишком много времени, около 40 секунд). я отсортировал набор по имени, а затем по расширению с помощью интерфейса:

public int CompareTo(card other)
    {
        if (string.Compare(this.name,other.name)>0)
        return 1;
        if (string.Compare(this.name, other.name) < 0)
            return -1;
        else if (string.Compare(this.expansion, other.expansion) > 0)
            return 1;
        else if (string.Compare(this.expansion, other.expansion) < 0)
            return -1;
        else
            return 0;
    }   // in my obj declaration. 
//and the following for declaring the sortedset:

    public SortedSet<card> MM = new SortedSet<card>();
    public SortedSet<card> MMother = new SortedSet<card>();
    //i can do the following:
int counter=0;
foreach (card thing in MM)  //took only .7 seconds
        {
        if(thing.IsProperSubsetOf(MMother))
        counter++;
        }

это отлично работает, но, поскольку объекты имеют не только имя и расширение, но и другие атрибуты, такие как, цена = 10, владелец = «jack» и т. д. и т. д. и т. д., идентификатор хотел бы получить к ним доступ без итерации. что-то типа:

int price = (MMother.matches(card) --> цена возврата)

но я не знаю, как это сделать. Какие-нибудь советы?


person Roland    schedule 04.04.2015    source источник
comment
Вам действительно нужна сортировка? Если нет, вы можете просто использовать HashSet; Взгляните на stackoverflow.com/questions/19556966/   -  person undefined    schedule 04.04.2015
comment
Мне просто нужно отсортировать его, когда я пишу материал на диск. я могу сортировать тогда! я изменил код на словарь, используя имя + расширение в качестве ключа.. теперь работает как шарм..спасибо..   -  person Roland    schedule 05.04.2015