Linq to Entities - Фильтр вложенной таблицы - PullRequest
1 голос
/ 29 июня 2011

У меня есть две таблицы в моем Edmx, Категории и элементы.В таблице предметов есть поле «Видимое».

Я хочу вернуть таблицу категорий с прикрепленной таблицей «Предметы» только с записями, где Visible = True.

Можете ли вы привести пример того, как вернуть только те элементы, где Visible = True??

Я пробовал следующее, которое не сработало

var categoryList = from cl в db.Categories, где cl.Items.Any (item => item .Visible == true) selectcl

Спасибо

Отметка

SQL-запрос:

ADO.NET: Выполнить считыватель "SELECT [Extent1]. [ID] AS [ID], [Extent1]. [Category_Name] AS [Category_Name], [Extent1]. [CategoryNote] AS [CategoryNote], [Extent1]. [CategoryOrder] AS [CategoryOrder] FROM [dbo]. [Категории] AS [Extent1] ГДЕ СУЩЕСТВУЕТ(ВЫБЕРИТЕ 1 КАК [С1] ОТ [dbo]. [Предметы] КАК [Экстент2] ГДЕ ([Экстент1]. [ID] = [Экстент2]. [CategoryID]) И ([Экстент2]. [Видимый] НЕ НУЛЬ)AND ([Extent2]. [Visible] = 1)) «Текст команды» SELECT [Extent1]. [ID] AS [ID], [Extent1]. [Category_Name] AS [Category_Name], [Extent1]. [CategoryNote]КАК [CategoryNote], [Extent1]. [CategoryOrder] AS [CategoryOrder] FROM [dbo]. [Categories] AS [Extent1] ГДЕ СУЩЕСТВУЕТ (ВЫБРАТЬ 1 AS [C1] ОТ [dbo]. [Items] AS [Extent2] WHERE ([Extent1]. [ID] = [Extent2]. [CategoryID]) AND ([Extent2]. [Visible] НЕ НУЛЬ)) И ([Extent2]. [Visible] = 1)) "было выполнено при соединении

1 Ответ

1 голос
/ 29 июня 2011

ваш код должен работать !!

попробуйте следующий код:

db.Categories.Where(c => c.Items.Any(i => (bool)i.Visible)).Select(c => c)

вы запускаете SQL Profiler / IntelliTrace для проверки сгенерированного кода.

РЕДАКТИРОВАТЬ:Я изменил код EDIT2: проверьте этот код (я изменил запрос)

db.Items.Where(i => i.Visible != null && (bool)i.Visible).SelectMany(i => i.Categories);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...