Как использовать Linq для получения уникального списка свойств из списка объектов?

Я пытаюсь использовать Linq для возврата списка идентификаторов, заданных для списка объектов, где id является свойством. Я хотел бы иметь возможность сделать это, не пробираясь через каждый объект и не вытаскивая уникальные идентификаторы, которые я нахожу.

У меня есть список объектов типа MyClass, и одним из свойств этого класса является ID.

public class MyClass
{
  public int ID { get; set; }
}

Что я хочу сделать, это написать запрос Linq, чтобы вернуть мне список этих идентификаторов

Как это сделать, если задано IList<MyClass>, так что он возвращает IEnumerable<int> идентификаторов?

Я уверен, что это возможно сделать в одной или двух строках, используя Linq, а не через каждый элемент в списке MyClass и добавление уникальных значений в список.

Любая помощь в создании элегантного решения была бы высоко оценена!

Ответ 1

IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();

Ответ 2

Используйте Distinct operator:

var idList = yourList.Select(x=> x.ID).Distinct();

Ответ 3

Используя прямой Linq, с расширением Distinct():

var idList = (from x in yourList select x.ID).Distinct();

Ответ 4

        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

ВЫХОД

1234567890