Удалить первый элемент из SortedSet C#

У меня есть SortedSet пользовательских объектов, и я хочу удалить первый элемент, который я беру с First() функция от SortedSet коллекция. Проблема в том, что это не работает, и я не знаю почему.

Любая помощь?

[править] Мой код

URL u = Queue.First(); Queue.Remove(и);

где URL - это пользовательский класс

7 ответов

First() Метод работает правильно. Но вы удалите First() отсортированный товар.

SortedSet<string> set = new SortedSet<string>();
set.Add("b");
set.Add("c");
set.Add("a");
Console.WriteLine(set.First()); // Display 'A'
set.Remove(set.First()); // Remove 'A'
Console.WriteLine(set.First()); // Display 'B'

Это довольно просто, например,

SortedSet<string> set = new SortedSet<string>();
set.Add("Hi");
var f = set.First();
set.Remove(f);

Ты можешь использовать SortedSet<T>.Remove Метод и Enumerable.First<TSource> метод

Удаляет указанный элемент из SortedSet<T>,

а также

Возвращает первый элемент последовательности.

SortedSet<string> s = new SortedSet<string>();
...
s.Remove(s.First());

First() ничего не удаляет. Вы не вытаскиваете это из стека. Если вы хотите удалить его после того, как вы его возьмете.

 var coll =....your sorted set
 var p = coll.First();
 coll.remove(p)

Рабочий пример использования Консольного приложения

    static void Main(string[] args)
    {
        SortedSet<string> set = new SortedSet<string>();
        set.Add("One");
        set.Add("Two");
        set.Add("Three");

        string first = set.First();
        set.Remove(first);

        foreach (var s in set)
        {
            Console.WriteLine(s);                
        }
        Console.ReadLine();
    }

Вы не можете удалить элемент, вызвав First(). Метод расширения First () просто возвращает ссылку на первый элемент. Для того, чтобы удалить предмет, нужно позвонить Удалить.

Другие вопросы по тегам