搜索栏在asp.net中搜索产品名称

时间:2016-07-15 00:33:02

标签: c# asp.net

我只是想通过搜索栏从数据库中获取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;
}

2 个答案:

答案 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;
}