[linq] Linq를 사용하여 객체 목록에서 고유 한 속성 목록을 얻으려면 어떻게해야합니까?

Linq를 사용하여 id가 속성 인 객체 목록이 제공된 id 목록을 반환하려고합니다. 각 객체를 반복하고 찾은 고유 ID를 가져 오지 않고이 작업을 수행하고 싶습니다.

MyClass 유형의 객체 목록이 있으며이 클래스의 속성 중 하나가 ID입니다.

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

내가하고 싶은 것은 Linq 쿼리를 작성하여 해당 ID 목록을 반환하는 것입니다.

id를 IList<MyClass>반환하도록 어떻게해야 IEnumerable<int>합니까?

MyClass 목록의 각 항목을 반복하고 고유 값을 목록에 추가하는 대신 Linq를 사용하여 한 줄 또는 두 줄로 수행 할 수 있어야합니다.

우아한 솔루션을 만드는 데 도움을 주시면 감사하겠습니다.



답변

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


답변

고유 연산자를 사용하십시오 .

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


답변

확장자 가있는 스트레이트 Linq 사용 Distinct():

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


답변

        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


답변

구별을 할 때 우리는 IEnumerable에도 캐스팅해야합니다. list가 모델 수단 인 경우 다음과 같은 코드를 작성해야합니다.

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


답변