2011-03-09 2 views
0

Linq newb 경보는 다소 시끄럽게 소리가 나고 아마도 일반 newb 경보가 울릴 것입니다. 그러나이 질문은 제가 견과를 몰고 다니기 때문에해야합니다. MyObject에는 몇 가지 속성이있는 개체가 있습니다. ID 번호. 2보다 많은 속성이 있지만 아이디어를 얻습니다.선택 항목 Linq 및 동적 객체 속성 선택

이러한 개체의 일반적인 목록이 있습니다. 이 목록에서 MyObject의 동적으로 설정된 속성을 기반으로 항목의 하위 집합을 생성해야한다는 요구 사항이 있습니다. 그래서, 대신

Dim lst as New List(Of MyObject) 
... code to populate list ... 
Dim newlist = (From o In lst Select o.Number Distinct).ToList() 

있는의 나는 분명히 위와 같이 작동하지 않습니다

Dim lst as New List(Of MyObject) 
... code to populate list ... 
Dim newlist = (From o In lst Select o.GetType().GetProperty("Number").Name Distinct).ToList() 

같은 날 동적으로 선택의 객체의 속성을 조회 할 수 있도록 뭔가를하고 싶습니다 그냥 속성 이름의 단일 항목 목록을 반환합니다. Linq 문에서 동적으로 객체 속성을 선택하는 비교적 간단한 방법이 있습니까?

모든 도움을 주시면 감사하겠습니다. 감사합니다.

답변

1

대신을 시도해보십시오

o.GetType().GetProperty("Number").GetValue(o) 

을 ... 당신의 선택 절에.

+0

BTW 솔루션 (및 솔루션 수정)은 리플렉션을 사용하며이를 수행하는 가장 좋은 방법은 아닙니다. –

+0

이것은 완벽하게 작동합니다. 나는 반사가 아마 여기에 갈 길이 아니라는 것에 동의한다. linq 표현을 사용하는 것이 더 좋을 것이다. 그러나 나는 이것을 빨리 돌릴 필요가 있었고, 표현을 둘러싼 머리를 감싸는 것이 내가 가질 수있는 것보다 더 많은 시간을 들여야하는 것처럼 보였다. – bcarroll2k3