2011-08-31 3 views
0

Linq를 사용하여 선택 목록 항목의 고유 멤버 만 가져옵니다. 나는이 목록을 반환하려면 어떻게 ... 내가 가진 무엇 지금별개의 SelectListItem 가져 오기

var queryResult = PatientList.Select(c => c).Distinct(); 
    PatientList = (List<SelectListItem>)queryResult; 

내가 두 번째 줄에 주조 오류가 발생하고있다. 진취적인 젊은 개발자는 무엇을해야합니까?

답변

1

쿼리 결과가 목록 아니므로

PatientList = queryResult.ToList(); 

당신의 버전이이 경우에 불가능 캐스팅을 사용하십시오. ToList은 호출 된 열거 형을 기반으로 새 목록을 구성합니다. 그것은이 같은 작업을 수행합니다

public static List<T> ToList<T>(this IEnumerable<T> collection) 
{ 
    return new List<T>(collection); 
} 

당신은 PatientList 요소가 다른 분야와 항목 유형 SelectListItem의이고 Distinct()가 다른 개체를 반환된다는 점에 유의 아닌 것을 분명히 확인해야합니다. 즉, PatientListSelected, TextValue 속성을 가진 두 개의 독립적으로 구성된 항목이있는 경우 Distinct() 호출 결과로 2 개의 값을 가질 수 있습니다.

또한 Select(c => c)을 사용해야하는 이유는 무엇입니까? 그것은 효과적으로 주목하고 있습니다.

+0

저는 Linq 놈입니다. 나는 이것이 유용하다는 것을 알아 내고 있다고 말하고있다. 제거하면 컴파일러 오류가 발생합니다. – SoftwareSavant

+0

마치 내가 별개의 SelectListItems를 얻지 않는 것처럼 보입니다. – SoftwareSavant

1
나는 당신의 목록에있는 항목하지만 어떤 방식을 모르는

당신이 게시 한 당신은 무엇을 당신이 목록

로 변환해야하는 경우 .ToList() 추가 목록

List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 }; 

    IEnumerable<int> distinctAges = ages.Distinct(); 

에 직접 Distinct()를 호출 할 수 있습니다에 대한

관련 문제