我正在尝试使用Distinct
和EntityFramework
查询并过滤两个条件下的记录来获得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
结果?
如果我没有正确解释我的问题,请原谅我。
答案 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();
}
查询背后的基本思想,选择项目的复选框值将在表格中与单个列进行比较。