我有一个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));
}