Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq where语句一对多_C#_Linq - Fatal编程技术网

C# Linq where语句一对多

C# Linq where语句一对多,c#,linq,C#,Linq,表“aaa”有一列,外键指向表“bbb”,而表“bbb”又指向表“ddd”。表“ddd”有一个ID为“costRef”的列 我想选择那些“aaa”,其中包含我的任何“ddd”以及我的列表中包含的特定costRef var query = from tr in db.aaa where tr.bbb.Any(x => x.ccc.ddd.Any(y => intList.Contains(y.costRef))) select tr;

表“aaa”有一列,外键指向表“bbb”,而表“bbb”又指向表“ddd”。表“ddd”有一个ID为“costRef”的列

我想选择那些“aaa”,其中包含我的任何“ddd”以及我的列表中包含的特定costRef

var query =
        from tr in db.aaa
        where tr.bbb.Any(x => x.ccc.ddd.Any(y => intList.Contains(y.costRef)))
        select tr;
在这种情况下,我得到了我所有的“aaa”,如果有任何参考。我可以理解,但这不是我想要的:)但我如何设法做到这一点?
尝试使用select和where语句而不是我的“any”进行分配。很可能这是一种方法,但我无法管理它。

我在Linq出现之前就做过SQL,所以我仍然倾向于遵循相同的结构。在这种情况下,您可以执行以下操作:

var query = from a in db.aaa
join b in db.bbb on a.FK equals b.ID
join c in db.ccc on b.FK equals c.ID
where intList.Contains(c.costRef)
select a

请将您的模型添加到您的问题中。我无法从代码中分辨出您拥有的属性类型。该查询提供了您所描述的所需的内容。如果它不是您想要的,那么您需要解释它与您想要的有何不同。那么您到底想要什么?在您的查询中什么是
ccc
?在您的描述中,您介绍了表aaa、bbb和ddd,但在您的代码示例中,您介绍了表ccc。ccc与其他表的关系是什么?这将是一个功能等同于OP的查询,只是你的查询比他的更详细。本质上,是的,它是相同的(除了ccc干扰),但他的解决方案不起作用,因此肯定有不正确的地方。这个解决方案回答了这个问题:我想选择那些“aaa”,其中包含我的列表中包含的任何具有特定costRef的“ddd”。因此,您的查询与他的查询执行完全相同的操作,而他的查询不会返回他想要的内容。因此,您的查询也不会返回他想要的内容。以稍微不同的方式编写相同的查询不会突然使其工作。