Entity Framework Отношения Запрос Запутанность - PullRequest
0 голосов
/ 29 марта 2012

Я новичок в EF и мне нужна помощь с запросом сущности через свойство навигации.

Используя только C # и LINQ лямбда-методы, которые я использую для получения этого кода:

 List<PublisherImage> images = db.DataModel.PublisherImages.Include("Categories").Where(pi => pi.Enabled && pi.Rendered).OrderBy(pi => pi.ID).ToList();

Мне нужно иметь возможность фильтровать эту сущность по списку идентификаторов категорий, чтобы я получал изображения издателей по этой категории. Используя приведенный выше пример, как мне сделать то, к чему я привык в SQL (оператор IN)?

Может кто-нибудь показать мне пример использования лямбда-методов C # LINQ, а не операторов LINQ?

Большое спасибо!

EDIT:

Вот лучший пример того, что я пытаюсь сделать:

 string categoryIds = "1,2,3,4";
 var ids = Array.ConvertAll(categoryIds.Split(','), int.Parse);
 List<PublisherImage> images = db.DataModel.PublisherImages.Include("Categories").Where(pi => pi.Enabled && pi.Rendered && pi.Categories.Where(c => ids.Contains(c.ID)).Any()).OrderBy(pi => pi.ID).ToList();

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Код под EDIT работает:

 string categoryIds = "1,2,3,4";
 var ids = Array.ConvertAll(categoryIds.Split(','), int.Parse);
 List<PublisherImage> images = db.DataModel.PublisherImages.Include("Categories").Where(pi => pi.Enabled && pi.Rendered && pi.Categories.Where(c => ids.Contains(c.ID)).Any()).OrderBy(pi => pi.ID).ToList();
0 голосов
/ 29 марта 2012

Из вашего последнего кода просто попробуйте изменить на pi.Categories.Any (c => ids.Contains (c.ID))

запись на моем телефоне, извините, что не написал весь запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...