2012-04-20 11 views
7

ダッパーを使用すると、次のようにIncorrect syntax near ','がスローされます。ダッパーとその状態

const string sql = 
    "select * from ZipToZipDistance z where z.NoRouteFound = 0" + 
    " and z.OriginZip in (@zips) or z.DestZip in (@zips)"; 
var zipStrings = zips.Select(x => x.ToString()).ToArray(); 
var result = connection.Query<ZipToZipDistance>(sql, 
    new { zips = zipStrings }); 

まあ、SQLにはカンマがありません。それはパラメータと何か関係があります。 OriginZipおよびDestZipは、varchar(10)である。 zipsIEnumerable<int>です。私は文字列に変換せずにパラメータとしてzipsを使ってみました。同じエラー。

非常に簡単ですね。私は間違って何をしていますか?

+1

@zips – jaxxbo

+0

からブラケットを外しちょうど今、同じ問題を抱えていたと私はちょうど@zips周りの括弧/括弧を削除しました。ちょうどiike jaxxboは言う。 –

答えて

7

試してみてください。

const string sql = 
const string sql = 
    "select * from ZipToZipDistance z where z.NoRouteFound = 0" + 
    " and z.OriginZip in @zips or z.DestZip in @zips"; 
var zipStrings = zips.Select(x => x.ToString()); 
var result = connection.Query<ZipToZipDistance>(sql, 
    new { zips = zipStrings }); 
+0

サム私が実行している問題は、文字列連結を使用してクエリを構築するとうまくいきますので、私は2100項目をIN節に渡すことができます。ここで私の意味は次のとおりです。 作業コード: var query = @ "SELECT * FROM QuestionTags WHERE QuestionID IN(" + idsCsvString + ")"; var results = conn.Query (query).ToList(); – Marko

+0

私はそれを次のようなエラーが発生することを示唆しているようにします。 着信表形式データストリーム(TDS)リモートプロシージャコール(RPC)プロトコルストリームが正しくありません。このRPC要求では、パラメータが多すぎます。最大値は2100です – Marko