我只是想通过搜索栏从数据库中获取results.aspx中的产品名称,但我只能通过相应的数字获得产品。
以下是有效的代码:
public IQueryable<Product> GetProduct([QueryString("srch")] int? ProductId)
{
var _db = new project.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (ProductId.HasValue && ProductId > 0)
{
query = query.Where(p => p.ProductID == ProductId);
}
else
{
query = null;
}
return query;
}
但是当我想通过产品名称搜索结果时,我遇到了一个问题。不起作用的代码是:
public IQueryable<Product> GetProduct([QueryString("srch")] int? ProductName)
{
var _db = new project.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (ProductName.HasValue && ProductName > 0)
{
query = query.Where(p => p.ProductName= "srch");
}
else
{
query = null;
}
return query;
}
答案 0 :(得分:0)
您希望按产品名称进行搜索,但您指定的数据类型为int。您在语法上也遗漏了=
,这将导致构建错误。
public IQueryable<Product> GetProduct([QueryString("srch")] string ProductName)
{
var _db = new project.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (!string.IsNullOrEmpty(ProductName))
{
query = query.Where(p => p.ProductName == ProductName);
}
else
{
query = null;
}
return query;
}
答案 1 :(得分:0)
您在给定代码中有语法错误和逻辑错误,您使用整数值进行了搜索查询,与该代码的简单比较将帮助您实现错误。
您应该使用==
进行比较,希望您了解=
,在c#中使用它来分配值。您的代码将始终将产品名称与"srch"
进行比较,因为您要将值与字符串"srch"
进行比较,而应使用传递给函数的参数。然后还需要更改参数的类型。它仍然是int,你应该把它作为字符串(假设ProductName
将是一个字符串)所以你的查询将是这样的:
public IQueryable<Product> GetProduct([QueryString("srch")] string ProductName)
{
var _db = new project.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (!string.IsNullOrEmpty(ProductName))
{
query = query.Where(p => p.ProductName == ProductName);
}
else
{
query = null;
}
return query;
}