Linq 在哪里包括

Ess*_*ans 0 c# linq entity-framework

我被这个 linq 查询困住了。

我有这张桌子。

ID  A   B   C  D
1   some data 
2   some other data
Run Code Online (Sandbox Code Playgroud)

然后,对于该表上的每条记录,我可能没有或许多行

ID  TableA_ID R
1   1         1
2   1         2
3   1         5
4   2         2
Run Code Online (Sandbox Code Playgroud)

例如。第 1 行(某些数据)在表 B 上有 3 行。

我尝试使用

tableA.Include(x => x.tablebchilds.Where( d => d.R == 1)).ToList() 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。与许多其他变化。

此查询的目标是返回tableA.row#1,如果我将它1作为值(值R)传递。Number <> 2不会给出任何结果。

表格在 EF 上链接。所以TableB.tableA_ID是的外键tableA.ID

编辑 #1

我在没有运气的情况下尝试了标记为重复的问题中的答案。如果用户插入1作为参数,则给出 2 tableA.rows ,linq 查询应返回Row #1, some data。如果2作为参数传递,则不返回任何内容。

一个有效的 SQL 语句是:

SELECT [TableA].* FROM [TableA] JOIN [TableB] ON [TableA].[Id] = [TableB].[TableA_Id] WHERE [TableB].[R] = 1
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mar*_*als 5

如果您正确配置了数据库关系,这必须工作。

tableA.Include(x => x.tableBChilds).Where(tableA => tableA.tableBChilds.Any(b => b.R== 1)).ToList();
Run Code Online (Sandbox Code Playgroud)