2014-02-17 4 views
0

이 쿼리를 작성했으며 비즈니스 규칙에 대한 이해가 향상되어이를 수정했습니다.Linq 잘못된 캐스트 예외 동일한 개체 유형

가장 최근의 반복에서 필자는 제거 할 수있는 중복성이 있는지 실제로 테스트했습니다. 우선 쿼리와 오류를 알려줍니다.

이제 쿼리 선택이 List of ExternalForums를 반환합니다. 그런 다음 목록을 반복하고 항목을 ExternalForums 객체의 다른 List에 추가합니다. 이것은 제가 제거하려고했던 중복입니다.

프리 컴파일러가 gtg이므로 한 번 실행하면 리팩토링 전에 모든 것이 정숙 해졌고 루프를 시작하면서 이상한 오류가 발생했습니다. NamSpcA.NamSpcB.ExternalForums를 입력 System.Collections.Generic.HashSet의 NamSpcA.NamSpcB.ExternalForums를 개체를 캐스팅 할 수

수 없습니다.

허? 그것들은 같은 객체 유형입니다.

내가 선택을 예상하는 방식으로 잘못된 것을하고 있습니까? T 내가 다른 모음, ExternalForum의 시간이 될 기대 ExtForum.ExternalForums 재산의 유형입니다

TIA

답변

1
var query = _forumExternalBoardsRepository.Table 
    .Where(id => id.Id == extforumBoardId) 
    .Select(ExtForum => ExtForum.ExternalForums); 

이 쿼리는 IEnumerable<T>를 반환합니다. 그리고 오류 메시지가 일치하여 IEnumerable<HashSet<ExternalForums>>이 있다고합니다. 당신이 컬렉션의 컬렉션 대신 ExternalForums 사용 SelectMany의 하나 개의 큰 컬렉션에 평평 할 것을해야하는 경우

: 나는 거 야

var query = _forumExternalBoardsRepository.Table 
    .Where(id => id.Id == extforumBoardId) 
    .SelectMany(ExtForum => ExtForum.ExternalForums); 
+0

이것에 대한 몇 가지 교육/자습서를해야한다. 당신은 옳았지만 나는 약간 스케치 된 이유에 대해 죽었습니다. 나는 이해하지만 그것은 어둡다. 결코 덜 감사하지 마십시오! – GPGVM