我有姓名表:
ID Name
1 Ken
2 John
3 Tom
...
我在c#代码中有以下变量:
var names
; //这是一些名字的列表,比如“ken,Tom”
我需要一个遍历Names表的查询,并获取所有不在names变量中的名称。
所以在上面的情况下,如果我运行查询结果应该是John。
我不知道如何在这个问题中编写查询我正在迭代名称并一次又一次地运行查询,我认为这是非常糟糕的方法。有人可以建议最有效的方法吗?
答案 0 :(得分:2)
如果您需要在T-SQL中执行此操作,您可以执行以下操作:
SELECT *
FROM table
WHERE Name NOT IN (<<comma separated list of values here>>)
可以在内联或存储过程中完成。
如果您可以使用实体框架(您指明.Net 4.0,那么您应该可以),那么您可以使用与此答案类似的内容:
答案 1 :(得分:0)
尝试使用table-valued parameter发送数据。此时,您可以正常比较。
答案 2 :(得分:0)
如果表格如您所示简单,那么我无法想象它有超过几千条记录。在这种情况下,表扫描应该是可接受的解决方案。
select Name
from tbl
where ', ' + @names + ', ' not like '%, ' + name + ', %';
参数化@names变量。