0

私は名前テーブルを持っています:

ID           Name 
1            Ken
2            John
3            Tom

...

私はC#コードで次の変数を持っています: var names; //これは「ケン、トム」などの名前のリストです

Names テーブルを通過し、names 変数にないすべての名前を取得するクエリが必要です。

したがって、上記の場合、クエリを実行すると結果はジョンになるはずです。

この問題でクエリを作成する方法がわかりません。名前を反復処理してクエリを何度も実行していますが、これは本当に悪い方法だと思います。誰かがこれを行うための最も効率的な方法を提案できますか?

4

3 に答える 3

2

T-SQL で行う必要がある場合は、次のようにすることができます。

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

これは、インラインまたはストアド プロシージャで実行できます。

Entity Framework を使用できる場合 (.Net 4.0 を示しているため、使用できるはずです)、この回答に似たものを使用できます。

Linq-to-sql 含まれていないか含まれていませんか?

于 2012-11-29T21:13:18.520 に答える
0

テーブルがあなたが示したように単純である場合、2,000 を超えるレコードがあるとは想像できません。その場合、テーブルスキャンは許容できるソリューションです。

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

@names 変数をパラメータ化します。

于 2012-11-29T21:16:22.593 に答える
0

テーブル値パラメーターを使用してデータを送信してみてください。その時点で、通常どおり比較できます。

于 2012-11-29T21:13:48.880 に答える