2012-03-29 5 views
-1

Я EF newb и нуждаюсь в некоторой помощи в том, как запрашивать сущность через свойство навигации.Entity Framework Связь Запрос Confusion

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

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

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

Может ли кто-нибудь показать мне пример с использованием методов C# LINQ Lambda, а не операторов 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(); 
+0

Этот вопрос представляется неясным. Не могли бы вы предоставить немного больше информации о своей модели и значениях, которые вы пытаетесь фильтровать? Мне кажется, что вы можете сделать «.Where (pi => ids.Contains (pi.ID)), но я не знаю, как выглядят ваши объекты/отношения. – mtmurdock

+0

Я просто добавил лучший пример кода. – Jared

+0

Хорошо, этот код более ясен, но в чем проблема? Похоже, это будет делать то, что вы хотите. – mtmurdock

ответ

0

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

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

0

Код под 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(); 
Смежные вопросы