我使用下面的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'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)
答案 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)