2013-03-01 105 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