多分私は何かを正しくしていませんが、文字列のリストを作成してSQLSELECT
クエリをフィルタリングする必要があり、単一のパラメーター値のみをエスケープするための答えしか見つかりません。
この配列を考えると:
string[] domains = new string[] { "sec", "krn", "op", "ip" };
このクエリを作成する必要があります
SELECT * FROM user_domains WHERE name IN ("sec", "krn", "op", "ip")
注:これは実際のクエリではありませんが、この質問のポイントを示しています。
単純な解決策は、クエリを次のように作成することです。
SELECT * FROM user_domains WHERE name IN (@p1, @p2, @p3, @p4)
そして、次のようにフォーマットされたパラメーターを使用してクエリを実行します
Dictionary<string,string> inTerms = domains
.Select((t, i) => new { Key = "p" + i, Term = t })
.ToDictionary(item => item.Key, item => item.Term,
StringComparer.OrdinalIgnoreCase);
別のアプローチはありますか?
アップデート
単純な文字列比較 (別名) をコンマまたは別の方法で区切られた用語の文字列と同じように簡単かつ高速に実行できますか?index of
元:
SELECT * FROM user_domains WHERE CHARINDEX(name, @terms) > 0