2013-03-01 49 views
0

我有一個橫幅與多個包。每個包有多個文件。EntityFramework。 SelectMany與匿名類型和投影

我有以下查詢:

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模型= ...」

我知道有10個記錄他們在哪裏,5滿足條件:

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

奇怪的是,我得到10個項目,5個數據和5沒有數據。

我在哪裏只應該列出5個項目。滿足標準的那個。

有人可以幫我解決這個問題嗎?

謝謝 米格爾

回答

1

如果這是:

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(); 
+0

謝謝。現在它工作正常。 – 2013-03-01 14:47:35