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();