Linq - 当过滤器为空时返回全部

时间:2018-01-17 16:16:04

标签: c# linq search

我有一个Linq查询,它根据用户输入的多字搜索返回一组产品。在搜索框中输入内容时,此功能正常,但未输入任何内容时,不会返回任何产品。当搜索是空白的时候,我希望Linq能够返回所有记录,但到目前为止还没有想到它。任何帮助将不胜感激。

    public ActionResult ProductListMain(string category, int? page, string searchby)
{
    searchby = searchby ?? "";

    List<string> searchList = searchby.Split(' ').ToList();

    JJDEntities db = new JJDEntities();

    var products = db.Products
       .Where(p => p.Category.Name == category
              && p.Active == true
              && !searchList.Any(s => !p.Keywords.Contains(s)))
       .Include(p => p.Category)
       .OrderBy(p => p.Description)
       .ThenBy(p => p.Name);

    List<ProductViewModel> productsVM = new List<ProductViewModel>();
    foreach (Product product in products)
    {
        ProductViewModel pvm = new ProductViewModel()
        {
            ProductID = product.ProductID,
            Name = product.Name,
            Description = product.Description,
            Keywords = product.Keywords,
            ImagePath = product.ImagePath,
            ThumbnailPath = product.ThumbnailPath,
            CategoryID = product.CategoryID,
            Price = product.Price,
            Active = product.Active,
            ProductStatusID = product.Status,
            Category = product.Category

        };
        productsVM.Add(pvm);
    }
    return View(productsVM.ToList().ToPagedList(page ?? 1, 15));
}

0 个答案:

没有答案