INT'不包含'包含'的定义没有扩展方法'包含'接受类型' int'的第一个参数可以找到

时间:2017-03-23 06:54:01

标签: c# entity-framework linq

我使用下面的LINQ查询遇到下面提到的错误,什么是not in SQL到LINQ的等价物?我试过where !cl.change_list_id.contains(from clcl in bitDB.component_labels_change_lists select clcl.change_list_id)哪个不工作?

var lookaheadRunChangeListIds = (from lrcl in bitDB.lookahead_run_change_list
                                 join cl in bitDB.change_lists on lrcl.change_list_id equals cl.change_list_id
                                 where lrcl.lookahead_run_id == lookaheadRunId 
                                 //and cl.change_list_id not in (select clcl.change_list_id from component_labels_change_lists as clcl)
                                 where !cl.change_list_id.contains(from clcl in bitDB.component_labels_change_lists select clcl.change_list_id)                                               
                                 select cl.change_list.ToString()).ToList();

错误

  

错误4' int'不包含'包含'的定义没有扩展方法'包含'接受类型' int'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)

1 个答案:

答案 0 :(得分:2)

序列包含id,而不是相反的方式,这就是错误说明的内容。你应该交换这些:

!(from clcl in bitDB.component_labels_change_lists 
  select clcl.change_list_id).Contains(cl.change_list_id)

您也可以尝试:

!bitDB.component_labels_change_lists.Any(clcl => clcl.change_list_id == cl.change_list_id)

但是检查生成的查询并选择更快的内容(这可能对此有所帮助:https://stackoverflow.com/a/1412902/3185569