2017-12-11 11 views
0

私の質問は、私は3つのテーブル、ファイル、ドキュメントとイメージを持っています。ファイルは多くのドキュメントを持ち、ドキュメントは多くのイメージを持つことができます。3番目のテーブルからデータを取得する方法は?

私は何をしようとしているので、1つのファイル内のすべてのドキュメントからすべてのイメージを取得しています。私はこのような何か試してみました:

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

このリストのクラスを表示できますか? 'listImg'?\ –

答えて

1

あなたはSelectManyを探しています:例外のよう

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

:あなたはそうあなたが、それにはないICollection<Images>オブジェクトをImagesオブジェクトを追加する必要がlistImgList<Entities.Images>として定義されています。しかし、表示されているとおり、リストを1つのステートメントで作成できるので、Addメソッドは必要ありません。

ちなみに、Imagesの代わりにImageというクラスには単数名を使用することをおすすめします。

0

リスト自体のクラスを宣言することなく、値を直接リストに追加することはできません。すでに

を実装するには、この listImg

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

のクラスを作成したと仮定すると

あなたのコード

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

変更

関連する問題