多条件查询的SQL Distinct记录

时间:2016-06-17 00:40:27

标签: c# sql-server asp.net-mvc entity-framework

我正在尝试使用DistinctEntityFramework查询并过滤两个条件下的记录来获得MS SQL结果,因此我使用了Distinct()

这是我的代码:

public List<ProductViewModel> GetPagedFilterProducts(int page, int type_id1, int type_id2)
{
    int recordsPerPage = 20;
    var skipRecords = page * recordsPerPage;
    var results = _products.GetAll().Where(p => p.type1 == type_id1 && p.type2 == type_id2).Select(p => new ProductViewModel
    {
        productId = p.product_id,
        productTitle = p.product_title,
    }).OrderByDescending(p => p.productTitle).Skip(skipRecords).Take(recordsPerPage).ToList();
    return results.Distinct().ToList();
}

我使用复选框来过滤记录,因此type_id可以有两个以上的条件(我的意思是type_id3)。我该如何查询,以便用户可以选择两种以上的类型条件,它仍然会给我Distinct个结果。

如何分别查询每个条件并将它们组合在一起并获得Distinct结果?

如果我没有正确解释我的问题,请原谅我。

1 个答案:

答案 0 :(得分:0)

public List<ProductViewModel> GetPagedFilterProducts(int page, int type_id1, int type_id2)
{
  int recordsPerPage = 20;
  var skipRecords = page * recordsPerPage;
  var results = _products.GetAll().Where(p => p.type == type_id1 || p.type == type_id2).Select(p => new ProductViewModel
  {
    productId = p.product_id,
    productTitle = p.product_title,
  }).OrderByDescending(p => p.productTitle)
  .Skip(skipRecords)
  .Take(recordsPerPage).ToList();

  return results.Distinct().ToList();

}

查询背后的基本思想,选择项目的复选框值将在表格中与单个列进行比较。