C# Linq在哪里包括
我被这个linq查询困住了 我有这张桌子C# Linq在哪里包括,c#,linq,entity-framework,C#,Linq,Entity Framework,我被这个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行(一些数据)在表B上有3行 我试着用 tableA.Include(x => x.tablebchilds.Where
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行(一些数据)在表B上有3行
我试着用
tableA.Include(x => x.tablebchilds.Where( d => d.R == 1)).ToList()
但它不起作用。和其他许多人一样,我也变了
此查询的目的是返回tableA.row
#1,如果我将其作为值传递(值R
)<代码>编号2不会给出任何结果
表格在EF上链接。所以TableB.tableA\u ID
是tableA.ID
编辑#1
我试了题中标记为重复的答案,但没有成功。如果用户插入1作为参数,那么linq查询应该返回行1,一些数据。如果2作为参数传递,则不返回任何内容
工作SQL语句是:
SELECT [TableA].* FROM [TableA] JOIN [TableB] ON [TableA].[Id] = [TableB].[TableA_Id] WHERE [TableB].[R] = 1
谢谢 如果您正确配置了数据库关系,那么这必须正常工作
tableA.Include(x => x.tableBChilds).Where(tableA => tableA.tableBChilds.Any(b => b.R== 1)).ToList();
如果您正确配置了数据库关系,那么这必须起作用
tableA.Include(x => x.tableBChilds).Where(tableA => tableA.tableBChilds.Any(b => b.R== 1)).ToList();
@格特·阿诺德:我不认为这是重复的,因为我认为恩格洛斯特在问别的问题,尽管无可否认,这不是很清楚。@jjj也许。关键是
包括和其中是不可能的(遗憾的是)。人们一遍又一遍地问这个问题。我在副本中描述了一项工作。如果OP试图实现其他目标,是的,它应该得到澄清。@GertArnold对这个答案的质疑在我的情况下不起作用。我知道包括在哪里是不可能的。我将编辑我的问题以澄清这一点。谢谢对不起,我还是不太明白你的意思。它看起来像一个Any
查询。它可能有助于显示工作代码和/或示例数据(输入和输出)。还可以显示导航属性(如A.B)的位置。这些总是使生活变得容易得多。无论如何,我会重新打开的,因为它似乎不是一个复制品,但它很可能会被认为“不清楚你在问什么”。@GertArnold谢谢Gert。我在马克的答案上留下了一些数据。总而言之:SQL语句工作正常。我正试图在linq ef中做到这一点。很appreciated@Gert阿诺德:我不认为这是重复的,因为我认为恩格洛斯特在问别的问题,尽管无可否认,这不是很清楚。@jjj也许吧。关键是包括和其中是不可能的(遗憾的是)。人们一遍又一遍地问这个问题。我在副本中描述了一项工作。如果OP试图实现其他目标,是的,它应该得到澄清。@GertArnold对这个答案的质疑在我的情况下不起作用。我知道包括在哪里是不可能的。我将编辑我的问题以澄清这一点。谢谢对不起,我还是不太明白你的意思。它看起来像一个Any
查询。它可能有助于显示工作代码和/或示例数据(输入和输出)。还可以显示导航属性(如A.B)的位置。这些总是使生活变得容易得多。无论如何,我会重新打开的,因为它似乎不是一个复制品,但它很可能会被认为“不清楚你在问什么”。@GertArnold谢谢Gert。我在马克的答案上留下了一些数据。总而言之:SQL语句工作正常。我正试图在linq ef中做到这一点。非常感激它不起作用或者我错过了什么。我用一条有效的SQL语句编辑了我的问题。会发生什么?异常消息?当您说`tableA.ID==1`时,1应该是R值,而不是tableA.ID。我需要任何“tableA”行在“tableB”中有1的内容。谢谢你不是说R值是你答案中TableA.ID的前置键吗?如果这是真的,则筛选tableA.ID==1
您选择的是tableb child.R==1Sorry的行。我在那里打错了字。表B有一个FK到表a和R值。如果1是参数,则应返回tableA.row#1。如果是2,则返回两行。(我用新数据编辑了原始问题)ThanksIt不起作用或者我遗漏了什么。我用一条有效的SQL语句编辑了我的问题。会发生什么?异常消息?当您说`tableA.ID==1`时,1应该是R值,而不是tableA.ID。我需要任何“tableA”行在“tableB”中有1的内容。谢谢你不是说R值是你答案中TableA.ID的前置键吗?如果这是真的,则筛选tableA.ID==1
您选择的是tableb child.R==1Sorry的行。我在那里打错了字。表B有一个FK到表a和R值。如果1是参数,则应返回tableA.row#1。如果是2,则返回两行。(我用新数据编辑了原始问题)谢谢