带有搜索变量参数的 Npgsql 查询返回空结果 C# Postgres

Npgsql query with search variable parameter returning empty result C# Postgres

我正在使用 Npgsql 查询数据库 table 并在我的 page/view 上显示结果。 代码在没有 where 子句和参数的情况下工作正常,因为它将 table 中的所有行获取到视图中。 现在我正在尝试合并一个搜索字符串变量(如果用户输入字符串,然后给我包含该字符串的 table 条记录)。我的代码如下

string searchValue = TempData["String"].ToString();

var model = new List<ProductViewModel>();      

NpgsqlConnection connection = new NpgsqlConnection
     ("Host=192.168.0.52;Database=test;Username=test;Password=test");
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand
     ("SELECT * FROM q_product WHERE q_description like @string", connection);

        //lets include our paramater
cmd.Parameters.Add("@string", NpgsqlTypes.NpgsqlDbType.Text);
cmd.Parameters["@string"].Value = searchValue;
cmd.Parameters.AddWithValue(searchValue);

NpgsqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
    var prod = new ProductViewModel();
    prod.q_description = dr["q_description"].ToString();
    prod.q_barcode = dr["q_barcode"].ToString();               

    model.Add(prod);  
}

var pagedProduct = new PaginatedSearch<ProductViewModel>(model, pageIndex, pageSize);

return View(pagedProduct);

当我只有

时,记录返回正常
SELECT * FROM q_product

但是在包含 where 子句和我的搜索字符串变量之后,我得到了一个空白页面。我在我的代码中做错了什么?

您可能想在查询中使用 % 以利用 like 运算符。

NpgsqlCommand cmd = new NpgsqlCommand
     ("SELECT * FROM q_product WHERE q_description like '%' || @string || '%'", connection);