0

複数のパックが入ったバナーがあります。各パックには複数のファイルがあります。

私は次のクエリを持っています:

  List<BannerModel> models = context.Banners
    .Select(x => x.Packs
      .SelectMany(p => p.Files, (p, f) => new {
        Id = p.Id,
        Flag = p.Flag,
        File = new { Id = f.Id, Flag = f.Flag, Key = f.Key, Mime = f.Mime }
      })
      .Where(a => a.File.Flag == "Img_200")
      .Select(a => new BannerModel { PackId = a.Id, ImageKey = a.File.Key })
    ).ToList();

1)「ToList()」でエラーが発生します。タイプ「System.Collections.Generic.List>」を「System.Collections.Generic.List」に暗黙的に変換することはできません

2)次に、ToListを削除し、「var models=...」を追加しました。

私はそれらの5つが基準を満たす10のレコードがあることを知っています:

.Where(a => a.File.Flag == "Img_200")

奇妙なことに、私は10個のアイテムを取得し、5個はデータあり、5個はデータなしです。

5つのアイテムのリストだけを取得する必要がある場所。基準を満たすもの。

誰かが私がこの問題を解決するのを手伝ってもらえますか?

ありがとう、ミゲル

4

1 に答える 1

2

これは次のようになります。

List<BannerModel> models = context.Banners
    .SelectMany(x => x.Packs
        .SelectMany(p => p.Files, (p, f) => new {
            Id = p.Id,
            Flag = p.Flag,
            File = new { Id = f.Id, Flag = f.Flag, Key = f.Key, Mime = f.Mime }
        })
    .Where(a => a.File.Flag == "Img_200")
    .Select(a => new BannerModel { PackId = a.Id, ImageKey = a.File.Key })
    ).ToList();
于 2013-03-01T14:05:12.077 に答える