我正在使用 Dapper.NET
开发采购订单搜索功能。用户可以按发票号和购买日期进行搜索。
如果用户在文本框中填写发票号,它将按发票号搜索,
如果用户填写发票号和购买日期,它会根据发票号和购买日期进行搜索,
如果用户填写购买日期,它将按购买日期搜索
因此,查询:
string query = "SELECT PurchaseDate, InvoiceNo, Supplier, Total FROM PurchaseOrder WHERE 1 = 1";
if (!string.IsNullOrEmpty(purchaseOrder.InvoiceNo))
{
query += " AND InvoiceNo = @InvoiceNo";
}
if (purchaseOrder.PurchaseDate != DateTime.MinValue)
{
query += " AND PurchaseDate = @PurchaseDate";
}
return this._db.Query<PurchaseOrder>(sql, ?).ToList();
问题是我不知道如何根据查询条件的数量动态传递值。
最佳答案
简单的选择:包括所有的东西! Dapper 将检查查询并确定哪些显然 是不需要的,然后删除它们 - 仅发送它可以在查询中找到的参数。因此,如果一些查询需要 @foo
,一些需要 @bar
,一些需要两者,一些不需要,那么只需:
int foo = ...
string bar = ...
...Query<ResultType>(sql, new { foo, bar })...
或者手动执行:查看 DynamicParameters
。
关于c# - 如何在 Dapper.NET 中添加动态搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613437/