2013-03-01 2 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 и добавил "вар модели = ..."

Я знаю, что есть 10 записей, где 5 из них удовлетворяют критериям:

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

что странно, что я получаю 10 пунктов, 5 с данными и 5 без каких-либо данных.

Где я должен получить только список из 5 предметов. Тот, который удовлетворяет критериям.

Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо, Miguel

ответ

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

Спасибо. Теперь он работает нормально. –

Смежные вопросы