2015-06-19 109 views
-2

我堅持這個linq查詢。Linq在哪裏包括

我有這個表格。

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行的表B.

我嘗試使用

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

,但它無法正常工作。與許多其他varation。

此查詢的目標是返回tableA.row#1,如果通過它1作爲值(值爲R)。 Number <> 2不會給任何結果。

表格在EF上鍊接。所以TableB.tableA_ID是1

我試圖在標記爲沒有運氣複製的問題的答案tableA.ID

編輯#外鍵。如果用戶插入作爲參數,那麼給那個2表A.rows,linq查詢應該返回行#1,某些數據。如果作爲參數傳遞,則不返回任何內容。

一個工作的SQL語句是:

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

謝謝!

+0

@Gert Arnold:我不認爲這是重複的,因爲我認爲Engerlost要求別的東西,雖然承認它不是很清楚。 – jjj

+1

@jjj也許吧。關鍵是'用'Where'包括'是不可能的(遺憾的是)。這是一遍又一遍的問。我在副本中描述了一種解決方法。如果OP想要實現其他目標,那麼應該澄清。 –

+0

@GertArnold對於這個答案的查詢不適用於我的情況。我知道包括哪裏是不可能的。我會編輯我的問題來澄清這一點。謝謝! – Jaxedin

回答

1

如果你有正確配置的數據庫關係,這必須工作。

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

它不工作,或者我失去了一些東西。我用一個有效的SQL語句編輯了我的問題。 – Jaxedin

+0

會發生什麼?異常消息? –

+0

當你說'tableA.ID == 1'** 1 **應該是** R **值而不是tableA.ID。我需要'tableA'中的'tableA'行有1個。謝謝! – Jaxedin