2016-09-23 1 views
0

IsFavourite 속성을 가진 항목 모음이 포함 된 listView가 있는데 Where 절에있는 각 항목에 대해이 속성을 false로 설정합니다. .목록의 특정 항목을 업데이트 할 수 없습니다

은 내가 한 것이 이것이다 : 그래서 기본적으로 내가 가진 모든 항목을

myListView.Items.Cast<Event>().Where(x => x.MatchLeague == leagueName && x.MatchNation == nationName).Select(c => { c.IsFavourite = false; return c; }).ToList(); 

특정 leagueNamenationName, 나는 모든 항목에 대한 설정을 시도 false로 IsFavourite 속성을 반환 한 후 이런 짓을, 항목을 목록으로 반환합니다.

는 그러나 나는이 예외 얻을 : 개체의 현재 상태로 인해

조작이 유효하지 않습니다를

내가 뭘 내가 잘못하고 있어요 아무 생각이, 내가 심지어이 유형을 사용하지했습니다 과거의 코드와 잘 작동하는 코드는 어떻게됩니까? 감사. 당신이 게시물 다루고있는 당신이 당신의 웹 설정에 다음을 추가해야하는 것보다 최대 HTTP 모음 키 예외를 수신하는 경우

+0

이것은 도움이 될 수 있습니다 : http://stackoverflow.com/a/3921084 –

+0

이런 식으로 개체를 수정하려고하면 LINQ를 매우 추악하게 남용합니다. LINQ는 데이터 수정 언어가 아닌 * 쿼리 * 언어입니다. 간단히 *이 해킹을 사용하지 마십시오. 새 객체를 반환하거나 'foreach' 루프에서 항목을 수정하지 마십시오. –

+0

foreach 루프가있는 @PanagiotisKanavos도이 예외가 있습니다. 그래서이 문제를 해결하기 위해 여기에 요청했습니다. – Unchained

답변

0

당신은 점점 예외는 있기 때문에 실행시 객체의 잘못된 상태입니다, 그래서 당신이 가지고있는 최선의 선택은 이런 식으로 문을 중단하고, 그 각각의 출력을 확인,과 같이하는 것입니다

var r1 = myListView.Items.Cast<Event>(); 

var r2 = r1.Where(x => x.MatchLeague == leagueName && x.MatchNation == nationName); 

var r3 = r2.Select(c => { c.IsFavourite = false; return c; }); 

var r4 = r3.ToList(); 

조금 도움이 될 것입니다.

this SO 대답을 확인할 수도 있습니다.

+0

'r4'에'r3.toList()'에 대한 예외가 있습니다. – Unchained

+1

@Unchained 어떤 예외입니까? –

0

나는 ..., 완전한 스택 트레이스가 무엇인지 확실하지 오전

<appSettings> 
    <add key="aspnet:MaxHttpCollectionKeys" value="10000" /> 
</appSettings> 

그러나 이것이 Linq Queries에만 관련된 경우 일반적으로 IE를 변경하기 위해 일치하는 레코드가 발견되지 않으면이 유형의 오류가 표시됩니다. 해당 리그 및 국가 이름 조합이있는 레코드를 찾을 수 없습니다.

관련 문제