2013-07-29 2 views
2

EventData EntityList를 일반 목록에 삽입 했으므로 역순으로 처리하려고합니다. 그러나 오류목록 역방향 C#

List<Entities.Notification> ProgramList = EventData.ToList(); 
ListViewEvents.DataSource = ProgramList.Reverse(); 
ListViewEvents.DataBind(); 

가 어떻게이 목록을 반대로 않는다 "암시 적으로 '개체'에 '무효'형식을 변환 할 수 없습니다"를 준다? EntityList도 직접 역으로 처리 할 수 ​​있습니까?

+0

가장 효율적인 방법을 원하면 스택에 추가 한 다음 제거하십시오. 스택의 첫 번째 항목이 마지막으로 꺼져 있습니다. –

답변

16

역전을 역으로 수행하고 아무 것도 반환하지 않습니다. 대신 수행 컴파일러는 Linq를 확장 방법 Enumerable.Reverse<T>(this IEnumerable<T>) 대신 방법 List<T>.Reverse()을 선택하고있다

List<Entities.Notification> ProgramList = EventData.ToList(); 
ProgramList.Reverse(); 
ListViewEvents.DataSource = ProgramList; 
ListViewEvents.DataBind(); 
+0

이것은 아마도 답이 아니라 원래 질문에 대한 주석이어야합니다. 당신 말이 맞아요.하지만 답이 될만큼 완전하지는 않습니다. –

+1

@Maurice Reeves -보다 완전한 대답을 위해 업데이트되었습니다. –

5

역방향 메서드는 새 List을 반환하지 않습니다. 그것을 호출 한 다음 데이터 소스를 설정하십시오.

List<Entities.Notification> ProgramList = EventData.ToList(); 
ProgramList.Reverse(); 
ListViewEvents.DataSource = ProgramList; 
ListViewEvents.DataBind(); 
+0

코드가 잘못되었습니다. 'ListView.DataBind'는 아무것도 반환하지 않습니다. – Romoku

+0

@Romoku, 당신이 맞습니다, 나는 코드를 철저히 읽지 않았습니다. – Khan

5

.

List<Entities.Notification> ProgramList = EventData.ToList(); 
ProgramList.Reverse(); 
ListViewEvents.DataSource = ProgramList; 
ListViewEvents.DataBind(); 

또는

List<Entities.Notification> ProgramList = EventData.ToList().Reverse(); 
ListViewEvents.DataSource = ProgramList; 
ListViewEvents.DataBind(); 

나 : List<T>.Reverse() 이후

가 현재 위치에서 요소를 반전보다는 새 목록을 반환하여 목록을 수정, 당신도 그냥 별도의 단계로 그를 호출 할 수 있습니다 대신 ToList() 대신 AsEnumerable()으로 전화하여 확장 방법에 바인딩 할 수 있습니다.

부수적으로, 확장 메서드는 실제로 목록에서 항목의 순서를 반대로 반복하지 않고 목록을 역순으로 탐색하는 반복자를 반환하므로 더 나은 성능을 발휘합니다 (List<T>.Reverse).

관련 문제