0

我有名称表:

ID           Name 
1            Ken
2            John
3            Tom

...

我在 c# 代码中有以下变量: var names; //这是一些名字的列表,比如“ken,Tom”

我需要一个通过 Names 表并获取不在 names 变量中的所有名称的查询。

因此,在上述情况下,如果我运行查询结果应该是 John。

我不确定如何在这个问题中编写查询我正在遍历名称并一次又一次地运行查询,我认为这确实是一个糟糕的方法。有人可以建议什么是最有效的方法吗?

4

3 回答 3

2

如果您需要在 T-SQL 中执行此操作,您可以执行以下操作:

SELECT *
FROM table
WHERE Name NOT IN (<<comma separated list of values here>>)

这可以内联或在存储过程中完成。

如果您可以使用实体框架(您指出.Net 4.0,所以您应该能够),那么您可以使用类似于此答案的内容:

Linq-to-sql 不包含或不在?

于 2012-11-29T21:13:18.520 回答
0

尝试使用表值参数发送数据。此时,您可以正常比较。

于 2012-11-29T21:13:48.880 回答
0

如果表格像您展示的那样简单,那么我无法想象它有超过几千条记录。既然如此,表扫描应该是一个可以接受的解决方案。

select Name
  from tbl
 where ', ' + @names + ', ' not like '%, ' + name + ', %';

参数化@names 变量。

于 2012-11-29T21:16:22.593 回答