根据非空过滤器

时间:2015-06-12 11:51:40

标签: asp.net-mvc entity-framework

我的视图页面中有15列,例如参考名称,形状,颜色,重量,价格等

我得到所有这些数据以优化数据库,如果用户没有选择形状,那么它不使用形状来细化,无论用户选择进行细化,只有那些项应该在查询中。

获取数据的代码 -

[HttpPost]
public ActionResult ParametricSearch(List<string> SourceId, List<string> ShapeId, int[] Weights, List<string> ColorId)
{
    ...some code is here....
}

我的问题是当用户没有选择'shape'然后它是null并且我不想在查询中添加它以进行优化时,只有选择项应该在查询中。 如何使用这些字段编写查询来优化所有数据库

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ to Entities链接Where子句。这些方面的东西:

[HttpPost]
public ActionResult ParametricSearch(List<string> SourceId, List<string> ShapeId, int[] Weights, List<string> ColorId)
{
     var query = yourDataContext.YourEntityName;

     if (SourceId != null && SourceId.Count > 0)
     {
         query = query.Where(x => SourceId.Contains(x));
     }

     if (ShapeId!= null && ShapeId.Count > 0)
     {
         query = query.Where(x => ShapeId.Contains(x));
     }

     if (ColorId!= null && ColorId.Count > 0)
     {
         query = query.Where(x => ColorId.Contains(x));
     }

     var result = query.Take(50).ToList();
     return View(result);
}