2015-07-15 2 views
0

У меня проблема, исключая записи из внешней таблицы на основе условия.Entity Framework исключает записи из внешней таблицы

// этот запрос возвращает все из всех таблиц, на которые ссылаются в MainTable

var query = db.MainTable.Where(x => x.ID == 123) 

Как я могу исключить некоторые записи из одной из зарубежных таблиц на основе поля состояния в зарубежной таблице? Что-то вроде этого:

var query = db.MainTable.Where(x => x.ID == 123 && y => y.ForeignTable.Status == false) 

Спасибо.

+0

У вас есть отношение внешнего ключа, размещенное в вашем объекте, то есть ICollection foreignItems или общедоступный виртуальный ForeignTable foreignItem? – MiltoxBeyond

+0

@ MiltoxBeyond, да я. – gg17

+0

Возможно, вы просто можете просто присоединиться к ограничению. что-то вроде этого: https://msdn.microsoft.com/en-us/library/vstudio/bb896266(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-5 – MiltoxBeyond

ответ

0

Поскольку вы сказали, что у вас есть правильные отношения, установленные, и ваш пример, кажется, предполагает, что у вас есть особая связь (не ссылка на ICollection), вы должны быть в состоянии просто сделать:

var query = db.MainTable.Where(x => x.ID == 123 && x.ForeignTable.Status == false).

Если вы были с помощью ICollection, вы тогда должны сделать что-то вроде этого:

var query = db.MainTable.Where(x => x.ID == 123 && x.ForeignTable.All(y => y.Status == false))

который я думать будет работать, но не проверял.

Вы также можете изучить синтаксис Enumerable.Join, который мне нужен для более сложных объединений. Однако это может быть действительно многословным, и для простых объединений метод выше должен работать нормально.

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