2017-12-11 6 views
0

내 질문은 파일이 많은 문서를 가질 수 있고 문서가 많은 이미지를 가질 수있는 파일, 문서 및 이미지라는 세 개의 테이블이 있습니다.세 번째 테이블에서 데이터를 검색하는 방법은 무엇입니까?

그래서 내가하려는 것은 하나의 파일에있는 모든 문서의 모든 이미지를 가져 오는 것입니다. 나는이 같은 시도 :

var exp = context.Files.Include(x => x.Documents.Select(s => s.Images)).ToList(); 
       var Doc = exp.Documents; 
       foreach(var docs in Doc) 
       { 
        listImg.Add(docs.Images); 
       } 

을하지만 'Entities.Images'에서 'System.Collections.Generic.ICollection'에서 변환 할 수 없습니다, 그것은 말한다 작동하지 않습니다.

이 문제를 해결하거나 다른 방법으로하는 방법에 대한 아이디어가 있으십니까?

+0

이 List의 클래스를 표시 할 수 있습니까? listImg'? \ –

답변

1

당신은 SelectMany 찾고 : 예외에 관해서는

var listImg = context.Files 
        .SelectMany(f => f.Documents) 
        .SelectMany(d => d.Images) 
        .ToList(); 

: 당신은 그래서 당신은, 그것을하지 ICollection<Images> 객체를 Images 개체를 추가 할 필요가 listImgList<Entities.Images>로 정의. 그러나 하나의 명령문에 목록을 만들 수 있기 때문에 사용자가 보는 것처럼 Add 메서드가 필요하지 않습니다.

그런데 클래스에 단수 이름을 사용하는 것이 좋습니다 (Images 대신 Image).

0

List 자체의 클래스를 선언하지 않고 직접 값을 목록에 추가 할 수 없습니다.

코드가 이미

을 구현하기 위해이 listImg

public class GetList 
{ 
    public int id {get;set;} 
    public Image thisImage{get;set;} 
} 

의 클래스를 만들었다 고 가정

foreach(var docs in Doc) 
{ 
     listImg.Add(docs.Images); 
} 

변경에