在ANY作为谓词的LINQ查询上的SQL等效项

时间:2017-09-08 07:08:42

标签: sql sql-server linq

我有一个LINQ查询,例如:

var myOffices=return table1
                .Where(o => o.department.Any());

table1有一个virtual部门属性,类型为ICollection<department>

我尝试了下面的SQL,但它给了我不正确的记录:

SELECT * FROM table1 T
WHERE EXISTS (SELECT 1 FROM department D)

table1和department通过外键引用链接

请告知。

1 个答案:

答案 0 :(得分:3)

您错过了这样一个事实,即您希望table1中的某些元素department 链接到这些特定的table1元素。

假设在departmenttable1的外键是fk_id_table1 并且table1的主键是id_table1,查询应为:

SELECT * FROM table1 T 
WHERE EXISTS (
    SELECT 1 FROM department D 
    WHERE D.fk_id_table1 = T.id_table1    -- This is the missing condition
)