在 ASP.NET Core 中,我有一個名為 Products 的表。
它有以下欄位:ProductName、Unit、CostPrice、SellingPrice、CreatedDate
CreatedDate 是日期時間。我想過濾 fromDate 和 toDate 之間 CreatedDate 的產品。我有這個代碼:
public async Task<List<Product>> GetByDateBetweenAsync(string fromDate, string toDate)
{
var sql = "SELECT * FROM Products WHERE CreatedDate ";
using (var connection = new SqlConnection(configuration.GetConnectionString("DefaultConnection")))
{
connection.Open();
var result = await connection.QuerySingleOrDefaultAsync<Product>(sql, new { CreatedDate = fromDate });
return result;
}
}
fromDate 和 toDate 應該在這個 fromat 中:yyyymmdd。
如何使用Dapper修改上面的代碼以實作此目的?
謝謝
uj5u.com熱心網友回復:
SQL 查詢應該是引數化查詢。Dapper 確實支持引數化查詢。
要查詢多行的結果,您需要以下任一方法:
.Query()、.Query<T>()或。參考:使用 Dapper 選擇多行資料.QueryAsync()QueryAsync<T>()使用
DateTime.TryParseExact()以安全地將具有模式的日期字串轉換為DateTime.
public async Task<List<Product>> GetByDateBetweenAsync(string fromDate, string toDate)
{
bool isValidDateFrom = DateTime.TryParseExact(fromDate, "yyyyMMdd", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateFrom);
bool isValidDateTo = DateTime.TryParseExact(toDate, "yyyyMMdd", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateTo);
if (!(isValidDateFrom && isValidDateTo))
{
// Handle for parsed fromDate & toDate is not a valid date
return new List<Product>();
}
var parameters = new { DateFrom = dateFrom, DateTo = dateTo };
var sql = "SELECT * FROM Products WHERE CreatedDate BETWEEN @DateFrom AND @DateTo";
using (var connection = new SqlConnection(configuration.GetConnectionString("DefaultConnection")))
{
connection.Open();
var result = await connection.QueryAsync<Product>(sql, parameters);
return result;
}
}
uj5u.com熱心網友回復:
改成這樣:
public async Task<List<Product>> GetByDateBetweenAsync(string fromDate, string toDate)
{
var startAt=DateTime.Parse(fromDate);
var endAt=DateTime.Parse(toDate);
var sql = $"SELECT * FROM Products WHERE CreatedDate BETWEEN {startAt} AND {endAt}";
using (var connection = new SqlConnection(configuration.GetConnectionString("DefaultConnection")))
{
connection.Open();
var result = await connection.QuerySingleOrDefaultAsync<Product>(sql);
return result;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511734.html
上一篇:控制第三方API消耗的解決方案
