int"不包含"包含"的定义,并且找不到接受类型为"int"的第一个参数的扩展方法"包含"



我在下面的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' 不包含 'contains' 的定义,并且找不到接受类型为 'int' 的第一个参数的扩展方法"contains"(您是否缺少 using 指令或程序集引用?

该序列包含 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(

最新更新