【发布时间】:2015-12-06 18:22:13
【问题描述】:
我正在关注 Mikes 在http://www.mikesdotnetting.com/article/156/webmatrix-database-helpers-for-in-clauses 上的 IN 条款上的帖子,但我无法添加额外的参数。根据他的帖子,我从类别的一些复选框开始并且工作正常,但我为品牌添加了一些其他复选框,但它不起作用。我不确定如何将其他参数传递给 in 子句。
我想要完成的想法是有一个带有不同产品过滤器(类别、品牌、年龄、价格等)的侧栏,当用户点击时,它会更新结果。有人可以帮我解决这个问题吗?
这是我正在使用的代码,但这会产生错误:
// for the categories
var cTemp = Request["categoryId"].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var cParms = cTemp.Select((s, i) => "@" + i.ToString()).ToArray();
var cIn = string.Join(",", cParms);
// for the brands
var bTemp = Request["brandId"].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
var bParms = bTemp.Select((s, i) => "@" + i.ToString()).ToArray();
var bIn = string.Join(",", bParms);
var sql = "SELECT DISTINCT P.ProductID, J.CategoryID, J.BrandID, P.ProductName, P.Price, " +
"FROM Products P " +
"JOIN Junction J ON J.ProductID = P.ProductID " +
"WHERE J.CategoryID IN ({0}) OR J.BrandID IN ({1})";
var products = db.Query(String.Format(sql, cIn, bIn), cTemp, bTemp);
【问题讨论】:
-
您看到的错误是什么?
-
这是 cTemp, cParms, cIn 返回的内容: cTemp: System.String[] cTemp:: 1 cParms: System.String[] cParms:: @0 cIn: @0
-
这是我得到的错误:异常详细信息:System.ArgumentException:不存在从 DbType System.String[] 到已知 SqlCeType 的映射。第 59 行:var products = db.Query(String.Format(sql, cIn, bIn), cTemp, bTemp);
-
@alvin : 尝试从 Query 方法调用中删除 cTemp、bTemp。
-
@Dark Knight 那行给我一个错误:解析查询时出错。 [令牌行号= 1,令牌行偏移量= 247,错误令牌= WHERE]
标签: c# asp.net razor web webmatrix