2015-06-19 3 views
-2

Я застрял в этом запросе linq.Linq where on include

У меня эти таблицы.

ID A B C D 
1 some data 
2 some other data 

Затем, для каждой записи в этой таблице я могу не иметь ни одного или много строк

ID TableA_ID R 
1 1   1 
2 1   2 
3 1   5 
4 2   2 

Например. Ряд 1 (некоторые данные) имеет 3 строки по таблице В.

Я попытался с помощью

tableA.Include(x => x.tablebchilds.Where(d => d.R == 1)).ToList() 

, но он не работает. Со многими другими.

Целью этого запроса является возвращение tableA.row # 1, если я передам его 1 как значение (значение R). Number <> 2 не даст никакого результата.

Таблицы связаны на EF. Так TableB.tableA_ID чуждо ключ tableA.ID

Edit # 1

Я попробовал ответы на вопрос, помеченный как дублируется без удачи. Дайте этому 2 tableA.rows, если пользователь вставляет в качестве параметра, запрос linq должен возвращать Строка № 1, некоторые данные. Если передается как параметр, ничего не возвращается.

Работающий SQL заявление:

SELECT [TableA].* FROM [TableA] JOIN [TableB] ON [TableA].[Id] = [TableB].[TableA_Id] WHERE [TableB].[R] = 1 

Спасибо!

+0

@Gert Арнольд: Я не думаю, что это дубликат, потому что я думаю, что Engerlost просит что-то другое, хотя по общему признанию, это не очень понятно. – jjj

+1

@jjj Может быть. Дело в том, что 'Include' с' Where' не представляется возможным (к сожалению, достаточно). Это задается снова и снова. Существует работа, о которой я расскажу в двух экземплярах. Если ОП пытается достичь чего-то другого, да, это должно быть разъяснено. –

+0

@GertArnold Запрос на этот ответ не будет работать в моем случае. Я знаю, что Include with where is is possible. Я отредактирую свой вопрос, чтобы уточнить это. Благодаря! – Jaxedin

ответ

1

Если у вас правильная настройка базы данных, это должно работать.

tableA.Include(x => x.tableBChilds).Where(tableA => tableA.tableBChilds.Any(b => b.R== 1)).ToList(); 
+0

Это не работает или я что-то упускаю. Я редактировал свой вопрос с помощью рабочего оператора SQL. – Jaxedin

+0

Что происходит? Сообщение об исключении? –

+0

Когда вы говорите 'table.ID == 1' ** 1 **, должно быть значение ** R ** не tableA.ID. Мне нужно, чтобы строки «tableA» имели 1 в «tableB». Благодаря! – Jaxedin