我在下面的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(